我读了几篇帖子,而且我在运行时向类中添加属性时仍遇到麻烦。它应该很简单,因为我有这样一个类:
public class MyClass
{
String Template;
String Term;
}
在运行时,我必须添加一些属性,如电话,电子邮件(它取决于......)。 有人可以解释一下如何在类初始化期间添加这些属性吗?
Srecko
答案 0 :(得分:4)
我不认为在这里添加属性是正确的。
诸如“电子邮件”或“电话”之类的属性只是一些密钥和值的附加对。您可以使用Dictionary
,但这会阻止您多次使用密钥(例如,联系人的多个电子邮件地址)。所以你也可以使用List<KeyValuePair<string, string>>
。像那样:
public class MyClass
{
String Template;
String Term;
public List<KeyValuePair<string, string>> Attributes { get; private set; }
public MyClass() {
Attributes = new List<KeyValuePair<string, string>();
}
public void AddAttribute(string key, string value) {
Attributes.Add(new KeyValuePair<string, string>(key, value));
}
}
// to be used like this:
MyClass instance = new MyClass();
instance.AddAttribute("Email", "test@example.com");
instance.AddAttribute("Phone", "555-1234");
答案 1 :(得分:3)
如果你有c#4.0,你可以使用Expando对象。
对于早期版本的c#,通常接受的方法是创建一个“属性包”,即键值对的集合(或字典)
dynamic foo = new ExpandoObject();
foo.Bar = "test";
答案 2 :(得分:1)
你可以为你的Key / Value-Pairs添加一个字典。
然后,如果添加属性,只需将Key = Attributename
,Value = YourValue
添加到字典中即可。
阅读也很简单 - 只需从你的字典中获取Key = Attributename
的值。