Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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