0

我可以在 C# 中在运行时更改类的字段吗?

例如,如果我有课:

public class ExampleClass{
    public string Name;
}

我可以在运行时更改它,使用反射或其他技术,将名称更改为 Name1?

public class ExampleClass{
    public string Name1;
}
4

2 回答 2

2

不,您不能在运行时更改类型的实际成员

选项:

  • 动态创建一个新类型,看起来很像ExampleClass,但有不同的成员 - 并且可能是它们之间的一些映射代码
  • 如果意图是针对某种运行时绑定,请考虑ICustomTypeDescriptoror IDynamicMetaObjectProvider- 这将允许某些框架将其视为具有Name1,即使它实际上没有(注意:诸如DynamicObjectExpandoObject包含的实现之类的东西IDynamicMetaObjectProvider,但你可以以其他方式)
  • 使用索引器,即var val = obj["Name1"];返回有意义的东西
于 2013-06-14T13:19:06.747 回答
0

看看动态对象:

http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx

于 2013-06-14T13:18:27.780 回答