private static Dictionary <MemberInfo, IGetterSetter> CreateAccessors(Type type) { Dictionary <MemberInfo, IGetterSetter> dictionary = new Dictionary <MemberInfo, IGetterSetter>(); MemberInfo[] members = type.GetMembers(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); ModuleBuilder module1 = AccessorMgr.GetOrCreateModule(); foreach (MemberInfo key in members) { if (((DontCopyAttribute[])key.GetCustomAttributes(typeof(DontCopyAttribute), false)).Length == 0) { IGetterSetter module2; if (key.MemberType == MemberTypes.Property) { module2 = AccessorMgr.AddToModule(module1, (PropertyInfo)key); } else if (key.MemberType == MemberTypes.Field) { module2 = AccessorMgr.AddToModule(module1, (FieldInfo)key); } else { continue; } dictionary.Add(key, module2); } } return(dictionary); }
private static IProducer CreateDefaultCtor(Type type) { IProducer module = AccessorMgr.AddToModule(AccessorMgr.GetOrCreateModule(), type.GetConstructor(new Type[0])); AccessorMgr.m_defaultCtors.Add(type, module); return(module); }
private static IProducer EmitAssembly(ConstructorInfo ctor) { return(AccessorMgr.AddToModule(AccessorMgr.GetOrCreateModule(), ctor)); }
private static IGetterSetter EmitAssembly(FieldInfo field) { return(AccessorMgr.AddToModule(AccessorMgr.GetOrCreateModule(), field)); }