Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 23bdf8a

Browse files
committed
Consolidate various GetProperty/GetField impls into central FieldInvoker/PropertyInvoker
1 parent 69160b1 commit 23bdf8a

15 files changed

+592
-528
lines changed

src/ServiceStack.Text/AutoMappingUtils.cs

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -607,9 +607,9 @@ public class AssignmentEntry
607607
public string Name;
608608
public AssignmentMember From;
609609
public AssignmentMember To;
610-
public PropertyGetterDelegate GetValueFn;
611-
public PropertySetterDelegate SetValueFn;
612-
public PropertyGetterDelegate ConvertValueFn;
610+
public GetMemberDelegate GetValueFn;
611+
public SetMemberDelegate SetValueFn;
612+
public GetMemberDelegate ConvertValueFn;
613613

614614
public AssignmentEntry(string name, AssignmentMember @from, AssignmentMember to)
615615
{
@@ -648,27 +648,27 @@ public AssignmentMember(Type type, MethodInfo methodInfo)
648648
public FieldInfo FieldInfo;
649649
public MethodInfo MethodInfo;
650650

651-
public PropertyGetterDelegate GetGetValueFn()
651+
public GetMemberDelegate GetGetValueFn()
652652
{
653653
if (PropertyInfo != null)
654654
return PropertyInfo.GetPropertyGetterFn();
655655
if (FieldInfo != null)
656656
return FieldInfo.GetFieldGetterFn();
657657
if (MethodInfo != null)
658-
return (PropertyGetterDelegate)
659-
MethodInfo.CreateDelegate(typeof(PropertyGetterDelegate));
658+
return (GetMemberDelegate)
659+
MethodInfo.CreateDelegate(typeof(GetMemberDelegate));
660660

661661
return null;
662662
}
663663

664-
public PropertySetterDelegate GetSetValueFn()
664+
public SetMemberDelegate GetSetValueFn()
665665
{
666666
if (PropertyInfo != null)
667667
return PropertyInfo.GetPropertySetterFn();
668668
if (FieldInfo != null)
669669
return FieldInfo.GetFieldSetterFn();
670670
if (MethodInfo != null)
671-
return (PropertySetterDelegate)MethodInfo.MakeDelegate(typeof(PropertySetterDelegate));
671+
return (SetMemberDelegate)MethodInfo.MakeDelegate(typeof(SetMemberDelegate));
672672

673673
return null;
674674
}
@@ -763,41 +763,15 @@ public void Populate(object to, object from,
763763
}
764764
}
765765

766-
public delegate void PropertySetterDelegate(object instance, object value);
767-
public delegate object PropertyGetterDelegate(object instance);
766+
public delegate object GetMemberDelegate(object instance);
768767

769-
public delegate void PropertySetterRefDelegate(ref object instance, object propertyValue);
770-
public delegate void PropertySetterRefGenericDelegate<T>(ref T instance, object value);
771-
772-
internal static class PropertyInvoker
773-
{
774-
public static PropertySetterDelegate GetPropertySetterFn(this PropertyInfo propertyInfo)
775-
{
776-
return PclExport.Instance.GetPropertySetterFn(propertyInfo);
777-
}
778-
779-
public static PropertyGetterDelegate GetPropertyGetterFn(this PropertyInfo propertyInfo)
780-
{
781-
return PclExport.Instance.GetPropertyGetterFn(propertyInfo);
782-
}
783-
}
784-
785-
internal static class FieldInvoker
786-
{
787-
public static PropertySetterDelegate GetFieldSetterFn(this FieldInfo fieldInfo)
788-
{
789-
return PclExport.Instance.GetFieldSetterFn(fieldInfo);
790-
}
791-
792-
public static PropertyGetterDelegate GetFieldGetterFn(this FieldInfo fieldInfo)
793-
{
794-
return PclExport.Instance.GetFieldGetterFn(fieldInfo);
795-
}
796-
}
768+
public delegate void SetMemberDelegate(object instance, object value);
769+
public delegate void SetMemberRefDelegate(ref object instance, object propertyValue);
770+
public delegate void SetMemberRefGenericDelegate<T>(ref T instance, object value);
797771

798772
internal static class TypeConverter
799773
{
800-
public static PropertyGetterDelegate CreateTypeConverter(Type fromType, Type toType)
774+
public static GetMemberDelegate CreateTypeConverter(Type fromType, Type toType)
801775
{
802776
if (fromType == toType)
803777
return null;

src/ServiceStack.Text/Common/DeserializeType.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ internal static object ParsePrimitive(string value, char firstChar)
251251
internal class TypeAccessor
252252
{
253253
internal ParseStringDelegate GetProperty;
254-
internal SetPropertyDelegate SetProperty;
254+
internal SetMemberDelegate SetProperty;
255255
internal Type PropertyType;
256256

257257
public static Type ExtractType(ITypeSerializer Serializer, string strType)
@@ -319,12 +319,12 @@ internal static ParseStringDelegate GetPropertyMethod(ITypeSerializer serializer
319319
return getPropertyFn;
320320
}
321321

322-
private static SetPropertyDelegate GetSetPropertyMethod(TypeConfig typeConfig, PropertyInfo propertyInfo)
322+
private static SetMemberDelegate GetSetPropertyMethod(TypeConfig typeConfig, PropertyInfo propertyInfo)
323323
{
324324
if (typeConfig.Type != propertyInfo.DeclaringType)
325325
propertyInfo = propertyInfo.DeclaringType.GetPropertyInfo(propertyInfo.Name);
326326

327-
if (!propertyInfo.CanWrite && !typeConfig.EnableAnonymousFieldSetterses) return null;
327+
if (!propertyInfo.CanWrite && !typeConfig.EnableAnonymousFieldSetters) return null;
328328

329329
FieldInfo fieldInfo = null;
330330
if (!propertyInfo.CanWrite)
@@ -349,16 +349,16 @@ private static SetPropertyDelegate GetSetPropertyMethod(TypeConfig typeConfig, P
349349
return PclExport.Instance.GetSetMethod(propertyInfo, fieldInfo);
350350
}
351351

352-
internal static SetPropertyDelegate GetSetPropertyMethod(Type type, PropertyInfo propertyInfo)
352+
internal static SetMemberDelegate GetSetPropertyMethod(Type type, PropertyInfo propertyInfo)
353353
{
354354
if (!propertyInfo.CanWrite || propertyInfo.GetIndexParameters().Any()) return null;
355355

356-
return PclExport.Instance.GetSetPropertyMethod(propertyInfo);
356+
return PclExport.Instance.GetPropertySetterFn(propertyInfo);
357357
}
358358

359-
internal static SetPropertyDelegate GetSetFieldMethod(Type type, FieldInfo fieldInfo)
359+
internal static SetMemberDelegate GetSetFieldMethod(Type type, FieldInfo fieldInfo)
360360
{
361-
return PclExport.Instance.GetSetFieldMethod(fieldInfo);
361+
return PclExport.Instance.GetFieldSetterFn(fieldInfo);
362362
}
363363

364364
public static TypeAccessor Create(ITypeSerializer serializer, TypeConfig typeConfig, FieldInfo fieldInfo)
@@ -371,12 +371,12 @@ public static TypeAccessor Create(ITypeSerializer serializer, TypeConfig typeCon
371371
};
372372
}
373373

374-
private static SetPropertyDelegate GetSetFieldMethod(TypeConfig typeConfig, FieldInfo fieldInfo)
374+
private static SetMemberDelegate GetSetFieldMethod(TypeConfig typeConfig, FieldInfo fieldInfo)
375375
{
376376
if (typeConfig.Type != fieldInfo.DeclaringType)
377377
fieldInfo = fieldInfo.DeclaringType.GetFieldInfo(fieldInfo.Name);
378378

379-
return PclExport.Instance.GetSetFieldMethod(fieldInfo);
379+
return PclExport.Instance.GetFieldSetterFn(fieldInfo);
380380
}
381381
}
382382

src/ServiceStack.Text/Common/JsDelegates.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ namespace ServiceStack.Text.Common
2626

2727
public delegate void WriteObjectDelegate(TextWriter writer, object obj);
2828

29-
public delegate void SetPropertyDelegate(object instance, object propertyValue);
30-
3129
public delegate object ParseStringDelegate(string stringValue);
3230

3331
public delegate object ConvertObjectDelegate(object fromObject);

src/ServiceStack.Text/Jsv/JsvDeserializeType.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ namespace ServiceStack.Text.Jsv
99
{
1010
public static class JsvDeserializeType
1111
{
12-
public static SetPropertyDelegate GetSetPropertyMethod(Type type, PropertyInfo propertyInfo)
12+
public static SetMemberDelegate GetSetPropertyMethod(Type type, PropertyInfo propertyInfo)
1313
{
1414
return TypeAccessor.GetSetPropertyMethod(type, propertyInfo);
1515
}
1616

17-
public static SetPropertyDelegate GetSetFieldMethod(Type type, FieldInfo fieldInfo)
17+
public static SetMemberDelegate GetSetFieldMethod(Type type, FieldInfo fieldInfo)
1818
{
1919
return TypeAccessor.GetSetFieldMethod(type, fieldInfo);
2020
}

0 commit comments

Comments
 (0)