refactor(tenpayv3): 优化反射性能

This commit is contained in:
Fu Diwei
2021-12-03 19:02:04 +08:00
parent a7090d8cf7
commit c00ce7be84

View File

@@ -69,8 +69,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
if (objType.IsArray)
{
var array = (obj as Array)!;
if (array.IsReadOnly)
return;
for (int i = 0, len = array.Length; i < len; i++)
{
@@ -88,7 +86,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
var oldValue = (string)element!;
var resHandler = replacement(obj!, currentProp, oldValue);
if (resHandler.Modified)
if (resHandler.Modified && !array.IsReadOnly)
{
array.SetValue(resHandler.NewValue, i);
}
@@ -96,7 +94,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
else if (elementType.IsClass)
{
InnerReplacePropertyStringValue(ref element, replacement);
array.SetValue(element, i);
//if (!array.IsReadOnly)
//{
// array.SetValue(element, i);
//}
}
else
{
@@ -107,8 +108,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
else if (obj is IList)
{
var list = (obj as IList)!;
if (list.IsReadOnly)
return;
for (int i = 0, len = list.Count; i < len; i++)
{
@@ -126,7 +125,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
var oldValue = (string)element!;
var resHandler = replacement(obj, currentProp, oldValue);
if (resHandler.Modified)
if (resHandler.Modified && !list.IsReadOnly)
{
list[i] = resHandler.NewValue;
}
@@ -134,7 +133,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
else if (elementType.IsClass)
{
InnerReplacePropertyStringValue(ref element, replacement);
list[i] = element;
//if (!list.IsReadOnly)
//{
// list[i] = element;
//}
}
else
{
@@ -145,8 +147,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
else if (obj is IDictionary)
{
var dict = (obj as IDictionary)!;
if (dict.IsReadOnly)
return;
foreach (DictionaryEntry entry in dict)
{
@@ -164,7 +164,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
string oldValue = (string)entryValue!;
var resHandler = replacement(obj, currentProp, oldValue);
if (resHandler.Modified)
if (resHandler.Modified && !dict.IsReadOnly)
{
dict[entry.Key] = resHandler.NewValue;
}
@@ -172,7 +172,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities
else if (entryValueType.IsClass)
{
InnerReplacePropertyStringValue(ref entryValue, replacement);
dict[entry.Key] = entryValue;
if (!dict.IsReadOnly)
{
dict[entry.Key] = entryValue;
}
}
else
{