Я создаю класс, который может принимать универсальный тип в качестве данных, и, в случае типа коллекции, я хотел бы создать метод расширения для добавления элементов внутри.К настоящему времени у меня есть следующий метод расширения:
public ActionResponseBuilder<ICollection<TElement>> AddElement<TElement>(this ActionResponseBuilder<ICollection<TElement>> builder, TElement element)
{
//TODO Logic
return builder;
}
Мой метод тестирования для этого:
var data = DateTime.Now;
var builtActionResponse = new ActionResponseBuilder<List<DateTime>>()
.SetData(new List<DateTime> { data })
.AddElement(data)
.Build();
Но у меня появляется следующая ошибка:
Ошибка CS1929 «ActionResponseBuilder>» не содержит определения для «AddElement» и наилучшей перегрузки метода расширения «ActionResponseBuilderHelper.AddElement (ActionResponseBuilder>, DateTime)» требует приемник типа «ActionResponseBuilder>
* 1011»Если я изменю тип для метода расширения на List, он будет работать, но я хотел бы воспользоваться для этого преимуществом и возможностями наследования и обобщений:
Чего мне не хватает, могу ли я это сделать?Любая идея?
Заранее большое спасибо:)
PD : Эти вещи являются частью небольшого инструмента nuget, весь код, кроме этого новогореализацию можно найти в следующем репозитории GitHub:
EDIT : первоначально имяметод расширения был неправильно скопирован AddData -> AddElement, благодаря @ Fabjan