Как получить аргумент T в универсальном классе и вернуть другой тип в интерфейсе - PullRequest
0 голосов
/ 06 января 2011

Я хочу использовать этот код:

List<U> SelectAll<T>() where T : class;

проблема в том, что я хочу передать тип T и получить тип U, но c # имеет ключевое слово T, но не имеет ключевого слова U. как я могу передать объявление типа T, получить другой тип в объявлении интерфейса>

спасибо


Извините, я публикую ответ здесь, но я хочу показать вам код: Я пишу этот код:

interface IRepoitory<T> where T : class
{
    T CreateInstance();

    IEnumerable<U> SelectAll();

что я могу написать вместо "U"? когда я реализую интерфейс и у меня есть этот код:

IEnumerable<TResult> SelectAll<TResult>();

В классе, реализующем интерфейс, я не могу вернуть любой класс вместо TResult спасибо

Ответы [ 2 ]

3 голосов
/ 06 января 2011

T - это не ключевое слово в C # - это просто обычное имя для параметра типа. Если вы хотите указать несколько параметров типа, вы можете сделать это очень легко:

public static List<U> SelectAll<T, U>() where T : class

(Непонятно, откуда поступают данные или как T будет использоваться здесь, по общему признанию.)

Обычно параметры типа : T или , начинаются с T, поэтому вы можете захотеть:

public static List<TResult> SelectAll<TResult>() where T : class

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

2 голосов
/ 06 января 2011
    public static List<TResult> SelectAll<T, TResult>(T inParam) where T: class
    {
        return new List<TResult>();
    }

Это ты хочешь ??Если вы не знаете тип результата, вам нужно указать компилятору метода, какой тип возвращать.Это делается с помощью SelectAll<T, TResult>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...