Дополнительный метод:
public static void AddRange<T, S>(this ICollection<T> list, params S[] values)
where S : T
{
foreach (S value in values)
list.Add(value);
}
метод касается всех типов и позволяет Вам добавить диапазон объектов к списку как параметры.
Пример:
var list = new List<Int32>();
list.AddRange(5, 4, 8, 4, 2);
Обратите внимание, что вам не обязательно создавать новые объекты повсюду. Вы можете просто решить большую часть плавного интерфейса через интерфейсы и просто реализовать множество интерфейсов на одном объекте. В этом случае вы можете просто вернуть этот
через новый интерфейс.
Пример:
public interface ICheckAssertionForValue
{
ICheckAssertionForValueThat That(Object value, String name);
}
public interface ICheckAssertion
{
ICheckAssertionForValue ForValue { get; }
}
public class Check : ICheckAssertion
{
public static ICheckAssertion Assertion
{
get { return new Check(); }
}
ICheckAssertionForValue ICheckAssertion.ForValue
{
get { return this; } // <-- no new object here
}
ICheckAssertionForValueThat ICheckAssertionForValue.That(Object value, String name)
{
return new SomeOtherObject(value, name);
}
}