Допустим, у меня есть такой интерфейс:
interface IAwesome
{
T DoSomething<T>();
}
Есть ли способ реализовать метод DoSomething с ограничением типов? Очевидно, это не сработает:
class IncrediblyAwesome<T> : IAwesome where T : PonyFactoryFactoryFacade
{
public T DoSomething()
{
throw new NotImplementedException();
}
}
Это, очевидно, не сработает, потому что этот DoSomething () не будет полностью удовлетворять контракту IAwesome - он будет работать только для подмножества всех возможных значений параметра типа T. Есть ли способ, чтобы эта работа не соответствовала какая-то «чёрная магия» (что я и собираюсь сделать в крайнем случае, если ответ «нет»)?
Честно говоря, я не думаю, что это возможно, но мне интересно, что вы, ребята, думаете.
РЕДАКТИРОВАТЬ : Интерфейс, о котором идет речь, System.Linq.IQueryProvider , поэтому я не могу изменить сам интерфейс.