C#在运行时添加属性

我读过很少的post,而且我在运行时向类中添加属性时仍然遇到麻烦。 它应该很简单,因为我有一个这样的类:

public class MyClass { String Template; String Term; } 

在运行时,我必须添加一些属性,如电话,电子邮件(它取决于……)。 有人可以解释一下如何在类初始化期间添加这些属性吗?

Srecko

我不认为在这里添加房产是正确的。 “电子邮件”或“电话”等属性只是键和值的一些附加对。 您可以使用Dictionary ,但这会阻止您多次使用某个键(例如,一个联系人的多个电子邮件地址)。 所以你也可以使用List> 。 像那样:

 public class MyClass { String Template; String Term; public List> Attributes { get; private set; } public MyClass() { Attributes = new List(); } public void AddAttribute(string key, string value) { Attributes.Add(new KeyValuePair(key, value)); } } // to be used like this: MyClass instance = new MyClass(); instance.AddAttribute("Email", "test@example.com"); instance.AddAttribute("Phone", "555-1234"); 

如果你有c#4.0,你可以使用Expando对象。

对于早期版本的c#,通常接受的方法是创建一个“属性包”,即键值对的集合(或字典)

 dynamic foo = new ExpandoObject(); foo.Bar = "test"; 

你可以为你的Key / Value-Pairs添加一个字典。 然后,如果添加属性,只需将Key = AttributenameValue = YourValue到字典中即可。 阅读也很简单 – 只需从字典中获取Key = Attributename的值即可。