Вы можете использовать метод расширения с другим именем:
public static T Put<T, U>(this T collection, U item) where T : ICollection<U> {
collection.Add(item);
return collection;
}
Чтобы создать подобный код:
var list = new List<int>();
list.Put(1).Put(2).Put(3);
Чтобы сохранить имя Add
, вы можетеесть такой метод:
public static T Add<T, U>(this T collection, Func<U> itemProducer)
where T : ICollection<U> {
collection.Add(itemProducer());
return collection;
}
И создайте такой код:
list.Add(()=>1).Add(()=>2).Add(()=>3);
Хотя это выглядит не очень хорошо.
Может быть, если мы изменимтипа, у нас может быть лучший синтаксис.
Учитывая этот класс:
public class ListBuilder<T> {
IList<T> _list;
public ListBuilder(IList<T> list) {
_list = list;
}
public ListBuilder<T> Add(T item) {
_list.Add(item);
return this;
}
}
Вы можете иметь этот метод:
public static ListBuilder<T> Edit<T>(this IList<T> list) {
return new ListBuilder<T>(list);
}
И использовать код, подобный этому:
list.Edit().Add(1).Add(2).Add(3);