0
我尝试使用下面的代码创建一个通用的扩展方法,但它给编译无法创建通用的扩展方法
public static class extentions<TSource, TResult>
{
public static IEnumerable<TSource> GetWholeHerichy(this IEnumerable<TSource> source, Func<TSource, TResult> KeySelector, Func<TSource, TResult> FKeySelector, TResult KeyElementid)
{
var k = source.Where(a => EqualityComparer<TResult>.Default.Equals(KeyElementid, KeySelector(a))).ToList();
while(true)
{
var nextLevel = source.Where(a => k.Select(b => KeySelector(b)).Contains(FKeySelector(a)) && ! k.Select(b => KeySelector(b)).Contains(KeySelector(a)));
if (nextLevel == null || nextLevel.Count() < 1)
break;
k.AddRange(nextLevel);
}
return k.AsEnumerable();
}
}
误差
错误1个扩展方法必须在规定的时间错误非泛型静态类
如果我删除<TSource, TResult>
从public static class extentions<TSource, TResult>
使类非通用再TSource
和TResult
在全班变得不确定
您需要使方法通用:'GetWholeHerichy' –