コード例 #1
0
ファイル: AccessorMgr.cs プロジェクト: uvbs/Asda2-Server
        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);
        }
コード例 #2
0
ファイル: AccessorMgr.cs プロジェクト: uvbs/Asda2-Server
        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);
        }
コード例 #3
0
ファイル: AccessorMgr.cs プロジェクト: uvbs/Asda2-Server
 private static IProducer EmitAssembly(ConstructorInfo ctor)
 {
     return(AccessorMgr.AddToModule(AccessorMgr.GetOrCreateModule(), ctor));
 }
コード例 #4
0
ファイル: AccessorMgr.cs プロジェクト: uvbs/Asda2-Server
 private static IGetterSetter EmitAssembly(FieldInfo field)
 {
     return(AccessorMgr.AddToModule(AccessorMgr.GetOrCreateModule(), field));
 }