public frField(PropertyInfo property, AotData aot) { RawMember = property; var getMethod = property.GetGetMethod(/*nonPublic:*/ true); var setMethod = property.GetSetMethod(/*nonPublic:*/ true); IsField = false; IsProperty = true; IsAutoProperty = getMethod != null && setMethod != null && getMethod.GetCustomAttributes(typeof(CompilerGeneratedAttribute), /*inherit:*/ true) != null; Name = property.Name; MemberType = property.PropertyType; Attributes = property.GetCustomAttributes(/*inherit:*/ true).OfType <Attribute>().ToArray(); CanRead = getMethod != null; CanWrite = setMethod != null; RawReader = aot.Read ?? ((o) => property.GetValue(o, EmptyArgs)); RawWriter = aot.Write ?? ((ref object o, object v) => { OneArg[0] = v; setMethod.Invoke(o, OneArg); OneArg[0] = null; }); if (frConfig.HasJit && aot.Read == null) { TryToAotCompileReader(property); } }
public frField(FieldInfo field, AotData aot) { RawMember = field; IsField = true; IsProperty = false; IsAutoProperty = false; Name = field.Name; MemberType = field.FieldType; Attributes = (Attribute[])field.GetCustomAttributes(/*inherit:*/ true); CanRead = true; CanWrite = !field.IsLiteral; RawReader = aot.Read ?? field.GetValue; RawWriter = aot.Write ?? ((ref object o, object v) => field.SetValue(o, v)); if (frConfig.HasJit && aot.Read == null) { TryToAotCompileReader(field); } }
public frMethod(MethodInfo method, AotData aot) { RawMethod = method; Invoke = aot.Invoke ?? method.Invoke; }