Beispiel #1
0
        public static Type CreateProxyType(IInterfaceDef idef, string nameSpace = "SharpQuant.Common.Meta")
        {
            var assemblyBuilder = GetAsmBuilder(idef.Name);

            var moduleBuilder = assemblyBuilder.DefineDynamicModule(string.Format("{0}.{1}", nameSpace, idef.Name), "test.dll"); //NOTE: to save, add "asdasd.dll" parameter

            var interfaceType = typeof(IEditable);
            var typeBuilder   = moduleBuilder.DefineType(idef.Name,
                                                         TypeAttributes.Public | TypeAttributes.Class);

            typeBuilder.AddInterfaceImplementation(interfaceType);

            //create our _isDirty field, which implements IProxy
            var field = CreateIsDirtyProperty(typeBuilder);

            // Generate a field for each property, which implements the T
            foreach (var property in idef.Properties)
            {
                CreateProperty(typeBuilder, property, field);
            }


            var generatedType = typeBuilder.CreateType();

            assemblyBuilder.Save(@"test.dll");  //NOTE: to save, uncomment

            return(generatedType);
        }
 public static MetaObject Create(IInterfaceDef idef)
 {
     return(Create(new[] { idef }));
 }