我使用System.Reflection.Emit
在运行时创建实现各种接口的类,这些接口包含方法和属性.
在生成类时,我为类应该实现的每个接口的每个接口方法生成一个具体方法.
由于属性只是语法上的糖,(103)我不以任何方式处理它们:对于任何属性Foo
,接口被绑定来声明一对get_Foo()
和set_Foo()
方法,因此我的代码生成相应的具体方法,并且结果类具有该属性而无需任何额外处理.
一切都很正常,除了一件烦人的事:
当作为生成的类的实例的对象显示在Visual Studio调试器的"局部变量"或"自动"窗口中时,如果展开该对象的 node ,则看不到任何属性及其值.它们只是没有被展示出来.他们不在那里.他们似乎并非如此.
现在,有趣的是:如果我在Visual Studio调试器的"Watch"窗口中添加该实例的名称加上一个点加上一个生成的属性的名称,那么调试器就会识别该属性,并向我显示它的值;所以该属性就在那里;但它不会显示在"Locals"或"Autos"下.
是什么导致了这种情况?我怎么才能修好它呢?