ICollection和IReadOnlyCollection的扩展方法

时间:2013-09-05 04:48:07

标签: c# icollection

我想为ICollection和IReadonlyCollection接口编写扩展方法(例如.IsEmpty()):

public static bool IsEmpty<T>(this IReadOnlyCollection<T> collection)
{
  return collection == null || collection.Count == 0;
}

public static bool IsEmpty<T>(this ICollection<T> collection)
{
  return collection == null || collection.Count == 0;
}

但是当我将它用于实现两个接口的类时,我显然得到了“模糊的调用”。 我不想输入myList.IsEmpty<IReadOnlyCollection<myType>>(),我希望它只是myList.IsEmpty()

这可能吗?

1 个答案:

答案 0 :(得分:2)

鉴于他们都继承自IEnumerable<T>,你可以通过对其进行扩展来避免歧义问题:

public static class IEnumerableExtensions
{
    public static bool IsEmpty<T>(this IEnumerable<T> enumerable)
    {
        return enumerable == null || !enumerable.Any();
    }
}