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