如何在泛型类中获取T参数并在Interface中返回另一个类型

时间:2011-01-06 06:54:24

标签: c# c#-4.0 generics

我想使用此代码:

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

问题是我要传递T类型并获取U类型但c#有T关键字但没有U关键字。我可以传递T类型广告获取接口declration中的另一种类型&gt;

感谢


对不起,我在这里发帖答案,但我想给你看代码: 我正在写这段代码:

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

    IEnumerable<U> SelectAll();

我能写什么而不是“U”? 当我的Impelement界面和我有这个代码:

IEnumerable<TResult> SelectAll<TResult>();

在实现接口的类中,我无法返回任何类而不是TResult 感谢

2 个答案:

答案 0 :(得分:3)

T不是C#中的关键字 - 它只是类型参数的常规名称。如果要指定多个类型参数,则可以非常轻松地执行此操作:

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

(诚然,不清楚数据来自何处或T将如何使用。)

通常使用T键入参数 T或 start ,因此您可能需要:

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

如果你能澄清你想要做什么,我们可以提供更多帮助。

答案 1 :(得分:2)

    public static List<TResult> SelectAll<T, TResult>(T inParam) where T: class
    {
        return new List<TResult>();
    }

你想要的吗?如果您不知道结果的类型,则需要告诉方法编译器要返回的类型。这是使用SelectAll<T, TResult>

完成的