Ответ Кирка находится справа. Как правило, вам не удастся получить вывод типа, если у вашей сигнатуры метода меньше типов параметров , чем у параметров типового типа .
В вашем конкретном случае, возможно, вы могли бы , возможно, перенести параметр типа T
на уровень класса, а затем получить вывод типа по вашему методу Get
:
class ServiceGate
{
public IAccess Get(S sig) where S : ISignatur
{
throw new NotImplementedException();
}
}
Затем код, который вы отправили с ошибкой CS0411, можно переписать как:
static void Main()
{
// Notice: a bit more cumbersome to write here...
ServiceGate service = new ServiceGate();
// ...but at least you get type inference here.
IAccess access = service.Get(new Signatur());
}