gpt4 book ai didi

c# - ICollection 与 ICollection - ICollection.Count 和 ICollection.Count 之间的歧义

转载 作者:太空狗 更新时间:2023-10-29 21:20:39 24 4
gpt4 key购买 nike

注意:这与 this other question 相似,但不完全相同

我已经实现了一个 IBusinessCollection界面。它来自 ICollection<T> ,以及旧的非通用 ICollection .我宁愿扔掉旧的破烂 ICollection ,但我将 WPF 数据绑定(bind)与 CollectionView 一起使用,它希望我实现旧的非泛型 IList :-(

无论如何,界面看起来像这样:

public interface IBusinessCollection<T> : ICollection<T>, ICollection
{ }

public interface ICollection<T>
{ int Count { get; } }

public interface ICollection
{ int Count { get; } }

由于使用依赖注入(inject),我传递了 IBusinessCollection<T> 类型的对象使用它们的接口(interface),不是具体类型,所以我有这样的东西:

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 种方法可以编译,但都很难看。

  1. 将类转换为它的具体实现(我可能不知道)

  2. 将类显式转换为 ICollection

  3. 将类显式转换为 ICollection<T>

是否有第四个选项完全不需要我施法?我可以根据需要进行任何更改 IBusinessCollection<T>

最佳答案

这似乎解决了我快速测试中的问题。

public interface IBusinessCollection<T> : ICollection<T>, ICollection
{
new int Count { get; }
}

关于c# - ICollection 与 ICollection<T> - ICollection<T>.Count 和 ICollection.Count 之间的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com