Техника, которую вы упоминаете, называется цепными методами. Он обычно используется при создании DSL или плавных интерфейсов в C #.
Типичным примером является то, что ваш метод AddItem () возвращает экземпляр класса (или интерфейса), частью которого он является. Это позволяет подключать к нему последующие вызовы.
public MyCollection AddItem( MyItem item )
{
// internal logic...
return this;
}
Некоторые альтернативы цепочке методов для добавления элементов в коллекцию включают:
Использование синтаксиса 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 и должен иметь конструктор по умолчанию (или вы должны вызвать конкретный конструктор в операторе инициализации). Тогда вы можете написать:
var myColl = new MyCollection { first, second, third, ... };