我想为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()
。
这可能吗?
答案 0 :(得分:2)
鉴于他们都继承自IEnumerable<T>
,你可以通过对其进行扩展来避免歧义问题:
public static class IEnumerableExtensions
{
public static bool IsEmpty<T>(this IEnumerable<T> enumerable)
{
return enumerable == null || !enumerable.Any();
}
}