作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个类:
class MyClass
{
}
...
MyClass c = new MyClass();
是否可以在运行时向此类添加属性/字段?
(我不知道它们在编译时的类型或名称是什么,而且它们没有我可以使用的通用接口(interface)。)
伪例子:
Add property named "Prop1" [type System.Int32]
Add property named "Prop900" [type System.String]
我已经阅读了 this question但它使用接口(interface)
提前致谢。
最佳答案
您不能在运行时使用新成员扩展现有类。但是,您可以使用 System.Reflection.Emit 创建一个新类以现有类作为基类。
typeBuilder.SetParent(typeof(MyClass));
typeBuilder.DefineProperty("Prop1", ..., typeof(System.Int32), null);
...
参见 TypeBuilder.DefineProperty Method (String, PropertyAttributes, Type, Type[])一个完整的例子。
关于c# - 如何在 C# 中的运行时向类添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14724822/
我是一名优秀的程序员,十分优秀!