gpt4 book ai didi

c# - 多接口(interface)继承

转载 作者:太空狗 更新时间:2023-10-29 22:29:10 25 4
gpt4 key购买 nike

我正在实现一组类和相应的接口(interface),我希望每个类都具有一组公共(public)属性和一组仅特定于该类的专用属性。因此,我正在考虑按照以下方式定义接口(interface):

interface ICommon {...}  // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2

我正在尝试在接口(interface)继承或类继承之间做出选择。所以,具体来说,我可以这样做:

interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}

...或者像这样...

class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}

是否有任何令人信服的理由选择一种方式?

更新:如果类必须是 COM 可见的,是否会影响答案?

最佳答案

当且仅当实现 IWidget1 的类型必须也实现 ICommon 时,您应该选择接口(interface)继承。无论哪种情况,该类都将分别实现 IWidget1 和 ICommon。唯一的区别是,如果您使 IWidget1 从 ICommon“派生”,您会强制执行 IWidget1 也必须是 ICommon 的事实。

一个很好的例子是 IEnumerable 和 ICollection。每个 ICollection 都保证是 IEnumerable,因此 ICollection 派生自 IEnumerable。如果作为集合但不可枚举是合法的或有意义的,那么 ICollection 的实现者也不必实现 IEnumerable。

无论您选择哪个,都不会影响 COM 可见性。如果我没记错的话,.NET 仍将单独导出接口(interface)。

关于c# - 多接口(interface)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369238/

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