2

我读过几篇文章,但在运行时向类添加属性时仍然遇到问题。它应该很简单,因为我有一个这样的类:

public class MyClass
    {
        String Template;
        String Term;
     }

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

斯雷科

4

3 回答 3

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");
于 2012-06-21T08:45:32.730 回答
3

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

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

dynamic foo = new ExpandoObject();
foo.Bar = "test";
于 2012-06-21T08:37:18.110 回答
1

您可以为您的键/值对添加一个字典。然后,如果您添加属性,您只需将Key = Attributename,添加Value = YourValue到字典中。阅读同样简单 - 只需Key = Attributename从字典中获取值即可。

于 2012-06-21T08:30:00.937 回答