我可以在c#运行时更改类的字段吗?
例如,如果我有一个类:public class ExampleClass{
public string Name;
}
我可以在运行时更改它,使用反射或其他技术,将Name更改为Name1吗?
public class ExampleClass{
public string Name1;
}
不能,不能在运行时更改类型的实际成员
选项:
- 动态创建一个新类型,它看起来很像
ExampleClass
,但有不同的成员-并且可能在它们之间有一些映射代码 - 如果意图是某种类型的运行时绑定,考虑
ICustomTypeDescriptor
或IDynamicMetaObjectProvider
-这将允许一些框架对待它,虽然它有一个Name1
,即使它实际上没有(注意:像DynamicObject
和ExpandoObject
的东西包括IDynamicMetaObjectProvider
的实现,但你可以做它在其他方式) - 使用索引器,即使
var val = obj["Name1"];
返回有意义的东西
看看DynamicObject:
http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx