gpt4 book ai didi

c# - 如何实现一个已经有其他接口(interface)的接口(interface)?

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:31 26 4
gpt4 key购买 nike

示例如下所示:

interface IA
{
ICollection<IB> Bs {get;set;}
}

interface IB
{
}


public class BBase : IB
{

}

public class ABase : IA
{
public ICollection<BBase> Bs { get; set; }
}

问题是,当我想用​​BBase实现接口(interface)IA时,就像我在ABase中做的那样,出现了错误.那是说我只能使用IB 而不是BBase 来实现ABase 中的IA 吗?

最佳答案

你需要做的是 IA通用:

interface IA<T> where T : IB
{
ICollection<T> Bs { get; set; }
}

interface IB
{
}


public class BBase : IB
{

}

public class ABase : IA<BBase>
{
public ICollection<BBase> Bs { get; set; }
}

接口(interface)的实现应该与它的定义完全匹配,所以在非泛型情况下你应该有 ICollection<IB> Bs {get;set;}ABase确切地说,它可以接受任何 IB实现。

当接口(interface)是通用的(interface IA<T> where T : IB)时,它的实现应该提供任何T满足给定的约束(即这里是 IB 的一些精确实现)。因此 ABase类也变得通用。

更多信息请阅读:

  1. Generic Interfaces (C# Programming Guide)
  2. where (generic type constraint) (C# Reference)

关于c# - 如何实现一个已经有其他接口(interface)的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15129433/

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