当前位置:  开发笔记 > 编程语言 > 正文

在C#中显示继承接口实现的最佳方法是什么?

如何解决《在C#中显示继承接口实现的最佳方法是什么?》经验,为你挑选了2个好方法。

给定以下接口:

interface IFoo
{
    void Foo();
}

interface IBar : IFoo
{
    void Bar();
}

表示给定类实现的最佳方法是什么IBar

方法A:

class Implementation : IBar { ... }

这看起来更简单,更清晰,但并不表示Implementation实现IFoo.

方法B:

class Implementation : IBar, IFoo { ... }

这似乎是最丰富的信息,但真正需要的额外信息?



1> tvanfosson..:

编译器不需要额外的信息,但它可能对您的代码的读者有所帮助,因为读者不必知道IBar扩展IFoo.此框架中的一个例子是List一个实现,ICollection以及IEnumerable,即使IList; 延伸ICollectionIEnumerable.

编辑:我认为,至少对我来说,我列出这两者的主要原因是你通常不会想到接口彼此继承.从类派生时,您希望继承本身可以继承的行为.如果您感兴趣,可以按照类层次结构进行推导.使用接口时,接口的派生更加不寻常,因此您不太可能看起来并且更有可能错过连接.列出它们都可以解决这个问题而不会有太多痛苦.



2> Greg Beech..:

就个人而言,我会选择前者.对于后者,假设你在这种情况下你有一堆派生类:

class DerivedA : Implementation, IBar, IFoo { ... }
class DerivedB : Implementation, IBar, IFoo { ... }
class DerivedC : Implementation, IBar, IFoo { ... }
class DerivedD : Implementation, IBar, IFoo { ... }

然后你的Implementation变更要求,以便它现在需要实现另一个接口,例如IBaz(只要它提供非抽象的实现,它可以做而不必影响任何派生类),那么你有两个选择:

    保留所有派生类定义,而不显式声明新接口信息,在这种情况下,类定义现在根据标准不正确,如果人们希望始终遵循标准,则可能会产生误导.

    去查找所有派生类及其所有派生类,并修复它们的声明.这需要时间,有点容易出错并且难以完全完成,并且将您的单个文件更改为多文件签入.

这些选项都没有吸引力,所以我选择不会让你陷入困境的选项.只需声明派生最多的接口.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有