尝试了以下代码:
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
替换为IEnumerable
public static IEnumerable<T> NotEmpty<T> (IEnumerable<T> instance, string paramName = null)
{
if (instance != null && instance.Any())
return instance;
throw new Exception ();
}
演示。