The CLI does not care about properties if all methods (which are really defined by the interface) have the following implementations:
var ab = AppDomain.CurrentDomain.DefineDynamicAssembly( new AssemblyName("foo"), AssemblyBuilderAccess.RunAndSave); var mb = ab.DefineDynamicModule("foo"); var tb = mb.DefineType("bar"); tb.AddInterfaceImplementation(typeof(IFoo)); var method = typeof(IFoo).GetProperty("Property").GetGetMethod(); var impl = tb.DefineMethod("impl", MethodAttributes.Private | MethodAttributes.Virtual, typeof(int), Type.EmptyTypes); var il = impl.GetILGenerator(); il.Emit(OpCodes.Ldc_I4_7);
source share