在运行时更改属性名称



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

例如,如果我有一个类:
public class ExampleClass{
    public string Name;
}

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

public class ExampleClass{
    public string Name1;
}

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

选项:

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

看看DynamicObject:

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

相关内容

  • 没有找到相关文章

最新更新