在初始化WF4活动时,我们可以这样做:
Sequence s = new Sequence()
{
Activities = {
new If() ...,
new WriteLine() ...,
}
}
请注意,Sequence.Activities
是Collection<Activity>
,但可以在没有新的 Collection()的情况下进行初始化。
如何在Collection<T>
属性上模拟此行为?
答案 0 :(得分:2)
任何具有Add()
方法和实现IEnumerable
的集合都可以通过这种方式初始化。有关详细信息,请参阅Object and Collection Initializers for C#。 (缺少新的Collection<T>
调用是由于对象初始化程序,并且内联项添加的能力是由集合初始化程序引起的。)
编译器将使用集合初始化块中的项自动调用类的Add()
方法。
作为一个例子,这里有一段非常简单的代码来演示:
using System;
using System.Collections.ObjectModel;
class Test
{
public Test()
{
this.Collection = new Collection<int>();
}
public Collection<int> Collection { get; private set; }
public static void Main()
{
// Note the use of collection intializers here...
Test test = new Test
{
Collection = { 3, 4, 5 }
};
foreach (var i in test.Collection)
{
Console.WriteLine(i);
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}