注意:这与其他问题相似,但并不完全相同
我已经实现了一个IBusinessCollection
接口。它来自两者ICollection<T>
,以及旧的非泛型ICollection
。我宁愿只转储旧的 busted ICollection
,但我正在使用带有 CollectionView 的 WPF 数据绑定,它希望我实现旧的 busted 非泛型IList
:-(
无论如何,接口看起来像这样:
public interface IBusinessCollection<T> : ICollection<T>, ICollection
{ }
public interface ICollection<T>
{ int Count { get; } }
public interface ICollection
{ int Count { get; } }
由于使用依赖注入,我IBusinessCollection<T>
使用它们的接口而不是具体类型传递类型的对象,所以我有这样的东西:
internal class AnonymousCollection : IBusinessCollection<string>
{
public int Count { get { return 5; } }
}
public class Factory
{
public static IBusinessCollection<string> Get()
{ return new AnonymousCollection(); }
}
当我尝试调用此代码时,出现错误,如下所示:
var counter = Factory.Get();
counter.Count; // Won't compile
// Ambiguity between 'ICollection<string>.Count' and 'ICollection.Count'
有 3 种方法可以编译,但都很难看。
将类转换为它的具体实现(我可能不知道)
将类显式转换为
ICollection
将类显式转换为
ICollection<T>
是否有第四个选项根本不需要我投射东西?我可以做任何我需要的改变IBusinessCollection<T>