在运行时更改属性名称

时间:2013-06-14 13:16:27

标签: c# reflection field

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

例如,如果我有班级:

public class ExampleClass{
    public string Name;
}

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

public class ExampleClass{
    public string Name1;
}

2 个答案:

答案 0 :(得分:1)

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

选项:

  • 动态创建一个新类型,看起来很像ExampleClass,但是有不同的成员 - 可能是它们之间有一些映射代码
  • 如果意图是针对某种运行时绑定,请考虑ICustomTypeDescriptorIDynamicMetaObjectProvider - 这将允许某些框架将其视为,就像它具有{{1即使它实际上没有(注意:Name1DynamicObject之类的内容包含ExpandoObject的实现,但您可以通过其他方式执行此操作)
  • 使用索引器,即IDynamicMetaObjectProvider返回有意义的内容

答案 1 :(得分:0)