Я пытаюсь написать метод расширения IThingRequest<TEntity>
, он возвращает Thing<TEntity>
. Мне бы хотелось, чтобы метод возвращал только базовый тип TEntity
, а не любые другие обобщенные c классы или интерфейсы, которые он реализовывал. Итак, в приведенном ниже примере wi sh состоит в том, что тип возвращаемого значения должен быть Thing<Entity>
, а не Thing<GenericClass<Entity>>
.
Метод расширений:
public static Thing<TEntity> DoStuff<TEntity>(IThingRequest<TEntity> request)
=> new Thing<TEntity>();
Вызов метода расширения :
public class Request : IThingRequest<GenericClass<Entity>>
{ }
var request = new Request();
var result = request.DoStuff();
Тип результата теперь Thing<GenericClass<Entity>>
.
Мой первый инстинкт был в том, что был бы способ достичь этого с помощью where
, но я не могу понять это из. Я также подумал об использовании отражений, чтобы получить * generic c тип TEntity
и вернуть Thing<object>
, но я считаю, что это потребует приведения при использовании метода DoStuff
.
Любая помощь с благодарностью!