Почему C# не выводит мои общие типы?C#

Место общения программистов C#
Anonymous
Почему C# не выводит мои общие типы?

Сообщение Anonymous »

У меня много веселья (веселье) с общими методами. В большинстве случаев вывод C# достаточно умный, чтобы выяснить, какие общие аргументы он должен использовать в моих общих методах, но теперь у меня есть дизайн, в котором компилятор C# не преуспевает, в то время как я считаю, что он мог бы найти правильные типы. /> Вот код: < /p>
Классы и определения интерфейса: < /p>

Код: Выделить всё

interface IQuery { }

interface IQueryProcessor
{
TResult Process(TQuery query)
where TQuery : IQuery;
}

class SomeQuery : IQuery
{
}
< /code>
Некоторый код, который не компилируется: < /p>
class Test
{
void Test(IQueryProcessor p)
{
var query = new SomeQuery();

// Does not compile :-(
p.Process(query);

// Must explicitly write all arguments
p.Process(query);
}
}
< /code>
Почему это? Что мне здесь не хватает? Попробуйте указать аргументы типа
явно. Iquery  
версия, которую реализует тип, является iquery и, таким образом, TreSult должен быть String .
[*] С помощью этой информации компилятор имеет TreSult и Tquery.


Подробнее здесь: https://stackoverflow.com/questions/851 ... eric-types

Вернуться в «C#»