protected PropertyBuilder DefineProperty( TypeBuilder typeBuilder, string name, Type type) { Type type1 = dCTypeStore.GetDCBuilderType("DCObject").Type; var propertyBuilder = typeBuilder.DefineProperty(name, PropertyAttributes.HasDefault, CallingConventions.HasThis, type, null, null, null, null, null); var attributes = MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName; var mdBuilder1 = typeBuilder.DefineMethod("set_" + name, attributes, null, new Type[1] { type }); var ilGenerator1 = mdBuilder1.GetILGenerator(); ilGenerator1.Emit(OpCodes.Ldarg_0); ilGenerator1.Emit(OpCodes.Ldstr, name); ilGenerator1.Emit(OpCodes.Ldarg_1); ilGenerator1.Emit(OpCodes.Call, type1.GetMethod("PropertySet", BindingFlags.Instance | BindingFlags.NonPublic)); ilGenerator1.Emit(OpCodes.Ret); propertyBuilder.SetSetMethod(mdBuilder1); var mdBuilder2 = typeBuilder.DefineMethod("get_" + name, attributes, type, null); var ilGenerator2 = mdBuilder2.GetILGenerator(); ilGenerator2.DeclareLocal(type); ilGenerator2.Emit(OpCodes.Ldarg_0); ilGenerator2.Emit(OpCodes.Ldstr, name); ilGenerator2.Emit(OpCodes.Call, type1.GetMethod("PropertyGet", BindingFlags.Instance | BindingFlags.NonPublic)); ilGenerator2.Emit(OpCodes.Castclass, type); ilGenerator2.Emit(OpCodes.Ret); propertyBuilder.SetGetMethod(mdBuilder2); return(propertyBuilder); }