有没有办法用C_来表达这个想法?(基本上是泛型类型的泛型类型)?

public static class ExtensionSpike
{
    public static IEnumerable<T> Where<TCollection<T>>(this TCollection<T> sourceCollection, Expression<Func<T, bool>> expr)
        where TCollection : class, IEnumerable<T>, INotifyCollectionChanged
    {
        throw new NotImplementedException();
    }
}

最佳答案

一般的约束可能不是你想要的,但这基本上就是你想要的吗?这将tcollection限制为IEnumerable<T>(尽管可以将ienumerable替换为list/collection/etc…)

public static IEnumerable<T> Where<T, TCollection>(this TCollection sourceCollection, Expression<Func<T, bool>> expr)
where TCollection : IEnumerable<T>, INotifyPropertyChanged
{
    throw new NotImplementedException();
}

更新:只是稍微修改了一下我的示例,以便更好地遵循方法——我很困惑,没有意识到您想要一个Where()方法,我假设它是您的通用约束where

10-06 11:22