如何初始化AttributeCollection的实例?

时间:2012-10-22 11:44:32

标签: c#

我正在尝试初始化AttributeCollection但我似乎没有得到Google提出this search的好建议。

我也打开使用专门的构造函数创建对象,该构造函数采用类型Attribute的数组,如here on MSDN所述,但我也找不到任何示例。

我可以通过自己添加每个属性来解决这个问题,如下所示,但这不如直接初始化它那么好。

bzzz["prop1"] = "val_1";
bzzz["prop2"] = "val_2";
...
bzzz["prop8"] = "val_8";
bzzz["prop9"] = "val_9";

这是System.ComponentModel中的课程。

2 个答案:

答案 0 :(得分:4)

这是完全合法的:

var attributes = new AttributeCollection();
attributes.Add("key1", "value1");
attributes.Add("key2", 2);
attributes.Add("key3", new EntityReference("contact", Guid.NewGuid()));

var entity = new Entity(){ Attributes = attributes };

修改

你可以在一个C#语句中完成所有这一切,有一次我认为它的可读性较差,但现在我发现它更具可读性,所以它真正归结为选择现有标准或个人选择:

var entity = new Entity()
{
    Attributes = new AttributeCollection() { 
            { "key1", "value1" },
            { "key2", 2 },
            { "key3", new EntityReference("contact", Guid.NewGuid())}
        }
};

答案 1 :(得分:0)

假设我有一个简单的属性

public class SimpleAttribute : Attribute
{
    public SimpleAttribute(String val)
    {
        value = val;
    }
    protected String value;    
}

我会像这样将Attributes添加到AttributeCollection

AttributeCollection attrColl = new AttributeCollection(
   new SimpleAttribute("value1"), new SimpleAttribute("value2"));

唯一的构造函数参数声明为params,因此您可以在构建集合时传递多个属性(以逗号分隔)。