注意:这是类似的,但与this other question并不完全相同
我实现了一个IBusinessCollection接口。它既从ICollection<T>中剥离出来,也从旧的非通用ICollection中剥离出来。我更愿意转储旧的已崩溃的ICollection,但是我使用WPF绑定一个CollectionView,它希望我实现旧的非通用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'有三种方法使这个编译,但它们都是丑陋的。
ICollection
ICollection<T>,该类显式地转换为
有没有第四种选择,根本不需要我投东西?我可以对IBusinessCollection<T>做任何必要的修改
发布于 2009-10-12 03:08:15
这似乎解决了我的快速测试中的问题。
public interface IBusinessCollection<T> : ICollection<T>, ICollection
{
new int Count { get; }
}发布于 2009-10-12 03:04:51
ICollection<string> counter = Factory.Get();
counter.Count; // No longer ambiguoushttps://stackoverflow.com/questions/1552456
复制相似问题