返回与泛型中的输入类型相同的实例类型

时间:2015-04-03 11:06:20

标签: c# linq ienumerable

试过这段代码:

public static T NotEmpty<T, X> (T instance, string paramName = null) where T : IEnumerable<X>
{
    if (instance != null)
        if (instance.Any ())
            return instance;

    throw new Exception ();
}

static void Main (string[] args)
{
    var list = new List<int> () { 1, 2, 3 };
    var t = NotEmpty (list);
}

编辑: 所以我希望传递任何实现IEnumerable List<int>的类型,并返回相同类型的实例(LIst<int>)。

  

错误:var t = NotEmpty (list);   方法NoName.Program.NotEmpty<T,X>(T, string)的类型参数无法从用法中推断出来。尝试显式指定类型参数。

1 个答案:

答案 0 :(得分:2)

我相信你不需要两个通用参数。您可以将T替换为IEnumerable<T>

public static IEnumerable<T> NotEmpty<T> (IEnumerable<T> instance, string paramName = null)
{
    if (instance != null && instance.Any())
        return instance;

    throw new Exception ();
}

Demo.