我有一个像“人”这样的课......
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类中获得'City'和'Country'属性。即 我的预期结果将是......
public class Person
{
public string Name { get; set; }
public int Id { get; set; }
public string City{ get; set; }
public string Country{ get; set; }
}
在运行时。
答案 0 :(得分:3)
尝试在运行时添加属性是一个非常糟糕的代码味道(并且最糟糕的情况是不可能的 - 我肯定不会说它绝对是完全不可能的)。
我建议您重新考虑您正在尝试实现的目标。如果您知道它会始终将City
和Country
添加到课程中,为什么您不能在编译时添加它们?告诉我们有关问题的更多信息可以帮助我们提出替代解决方案。
答案 1 :(得分:2)
据我所知,这是不可能的。编译class
后,您无法更改它,已完成。但是您可以在运行时创建具有新属性的新类。在MSDN中有一个很好的信息:
答案 2 :(得分:2)
您可以尝试使用ExpandoObject
在运行时添加属性。请参阅this article。
dynamic expando = new ExpandoObject();
expando.Name = "Dude 1";
现在expando
对象包含值为Name
的属性Dude 1
。