Я хочу, чтобы метод расширения работал как с моим List, так и с IQueryable. Приведенные ниже методы расширения достигают этого, но затем, если я добавлю другой идентичный метод расширения, но для другого, совершенно несвязанного типа, я получаю неоднозначный вызов ошибок компиляции. Это почему? Разве компилятор не достаточно умен, чтобы знать, какой метод расширения работает? Я имею в виду, что только один из этих вызовов действителен, почему компилятор не может сказать? Большое спасибо!
class ClassA
{
public bool IsActive{ get; set;}
}
class ClassB
{
public bool IsActive { get; set;}
}
// then here are my extensions
public static T IsActive<T>(this T enumerableOrQueryable, bool isActive)
where T : IEnumerable<ClassA>
{
return (T)enumerableOrQueryable.Where(x => x.IsActive == isActive);
}
public static T IsActive<T>(this T enumerableOrQueryable, bool isActive)
where T : IEnumerable<ClassB>
{
return (T)enumerableOrQueryable.Where(x => x.IsActive == isActive);
}