在运行时将属性添加到现有 c# 类
本文关键字:添加 运行时 属性 | 更新日期: 2023-09-27 18:36:37
我有一个像"人"这样的类...
public class Person
{
public string Name { get; set; }
public int Id { get; set; }
}
我有一个DTO类,比如
public class DTOAddress
{
public string City{ get; set; }
public string Country{ get; set; }
}
在运行时,我需要在 Person 类中获取"城市"和"国家"属性。我的预期结果将是...
public class Person
{
public string Name { get; set; }
public int Id { get; set; }
public string City{ get; set; }
public string Country{ get; set; }
}
在运行时。
尝试在运行时添加属性充其量是一种非常糟糕的代码气味(最糟糕的是不可能 - 我不会肯定地说这绝对是不可能的)。
我建议你重新考虑你想要实现的目标。如果您知道它总是会向类中添加City
和Country
,为什么不能在编译时添加它们呢?告诉我们更多有关所讨论的问题可以帮助我们提出替代解决方案。
据我所知,这是不可能的。一旦编译了class
,就无法更改它,它就完成了。但是,您可以在运行时创建具有新属性的新类。MSDN 中有一个很好的信息:
- 发出动态方法和程序集
可以尝试使用ExpandoObject
在运行时添加属性。请参阅此文章。
dynamic expando = new ExpandoObject();
expando.Name = "Dude 1";
现在,expando
对象包含一个属性Name
值为 Dude 1
。