我实际上不知道在C#中这叫什么。但是我想向我的班级添加功能,以同时添加多个项目。
myObj.AddItem(mItem).AddItem(mItem2).AddItem(mItem3);
您提到的技术称为可链接方法。在C#中创建DSL或流畅接口时,通常使用它。
典型的模式是让您的AddItem()方法返回其所属的类(或接口)的实例。这样可以将后续调用链接到该链接。
public MyCollection AddItem( MyItem item ) { // internal logic... return this; }
用于将项目添加到集合的方法链接的一些替代方法包括:
使用params语法允许将多个项目作为数组传递到您的方法。当您想隐藏数组创建并为方法提供变量参数语法时很有用:
params
public void AddItems( params MyItem[] items ) { foreach( var item in items ) m_innerCollection.Add( item ); } // can be called with any number of arguments... coll.AddItems( first, second, third ); coll.AddItems( first, second, third, fourth, fifth );
提供IEnumerable或IEnumerable类型的重载,以便可以将多个项目一起传递给您的集合类。
public void AddItems( IEnumerable<MyClass> items ) { foreach( var item in items ) m_innerCollection.Add( item ); }
使用.NET 3.5集合初始化器语法。您的类必须提供单个参数Add( item )方法,实现IEnumerable,并且必须具有默认构造函数(或者您必须在初始化语句中调用特定的构造函数)。然后您可以编写:
Add( item )
var myColl = new MyCollection { first, second, third, ... };