Ban*_*nny 4 c# reflection private-members typedescriptor
我想在c#中使用TypeDescriptor获取类的私有属性.
到目前为止
TypeDescriptor.GetProperties(myType);
Run Code Online (Sandbox Code Playgroud)
仅返回公共,非静态属性.
我还没有找到一种方法来影响GetProperties或GetProvider方法以强制它们返回"默认"(公共,非静态)成员以外的其他方法.
请不要建议反射(我很清楚BindingFlags),除非它给我一个PropertyDescriptor对象.
要做到这一点,你必须编写并注册一个定制TypeDescriptionProvider是不使用反射.但是,您当然可以这样做 - 您甚至可以拥有PropertyDescriptor实际与字段(而不是属性)对话的实例.你也可能需要编写自己的bespke PropertyDescriptor的实现,因为ReflectPropertyDescriptor是internal(你也许可以使用反射来获得).最终,您将不得不使用反射来实现,但您可以实现TypeDescriptor.GetProperties(Type)返回所需PropertyDescriptor实例的要求.
您也可以为控件之外的类型执行此操作.但是,应该强调的是,你的意图是不寻常的.
如果您正在使用.GetProperties(instance)重载,那么您也可以通过实现ICustomTypeDescriptor比完整更简单的方法来实现TypeDescriptionProvider.
有关挂钩定制提供程序的示例,请参阅HyperDescriptor
| 归档时间: |
|
| 查看次数: |
2637 次 |
| 最近记录: |