C# 在部分类中实现接口

C# 在部分类中实现接口,c#,.net,interface,code-organization,partial-classes,C#,.net,Interface,Code Organization,Partial Classes,考虑一个实现了很多接口的类,使用部分类定义在单独的文件中实现每个接口有意义吗 这是对语言特性的滥用还是我不知道的习惯用法?如果类必须实现许多接口,那么这是管理源代码的合理方法,是的。您可以编辑项目文件,使其中几个项目依赖于一个“主”类文件,从而使解决方案资源管理器更易于使用 您应该问问自己,是否不应该有几个较小的类,每个类实现一个接口。有时这是一种更好的方法,有时不是-但这个问题总是值得问的。这不是我听说过的习惯用法,但听起来像是一种优雅的代码分区方法。唯一的好处是将各种接口实现放在单独的物理文

考虑一个实现了很多接口的类,使用
部分类
定义在单独的文件中实现每个接口有意义吗

这是对语言特性的滥用还是我不知道的习惯用法?

如果类必须实现许多接口,那么这是管理源代码的合理方法,是的。您可以编辑项目文件,使其中几个项目依赖于一个“主”类文件,从而使解决方案资源管理器更易于使用


您应该问问自己,是否不应该有几个较小的类,每个类实现一个接口。有时这是一种更好的方法,有时不是-但这个问题总是值得问的。

这不是我听说过的习惯用法,但听起来像是一种优雅的代码分区方法。

唯一的好处是将各种接口实现放在单独的物理文件中


在我看来,将类声明放在单独的物理文件中的缺点超过了这一点。

您可以,是的,但这不会给您带来任何优势,比如说,与具有区域的单个文件相比。部分类往往令人讨厌,因为它没有立即明显的另一部分,其他人看这个类可能会错过它。我个人更喜欢把所有的东西都放在一个地方。

我想你应该问问自己,为你的类实现的每个接口提供一个.cs文件是否会让你更容易或更难理解代码。你会如何命名这些文件


虽然我在这里可能会有点冒险,但我想我会建议,如果你的目标是组织代码,那么你应该使用非常讨厌的
#region
指令。

Pro:可以很容易地确定类的哪个部分实现了哪个接口(当您使用的工具不允许轻松浏览IDE中的代码时,这很好)

缺点:更容易丢失上下文,因为现在您必须在多个文件之间导航

我认为现在IDE的进步并不重要。你可以有一个文件,让工具帮助你快速地在类结构中导航。但是,工具也可以在任何一种方式中帮助你…所以


Partial仍然适用于将生成的代码与自定义代码分离。

它与在一个分部类文件中包含构造函数、在另一个分部类文件中包含属性等一样有意义


i、 e.除非你有充分的理由,否则不要这样做。

我认为在这种情况下,有比使用分部更好的方法来构造代码。Visual Studio中没有参考资料可以查看特定类有多少分部实现,因此很容易迷失方向

根据“很多接口”的实际接口数量,您可以使用区域来分离实现。在10-15个接口(比如总共需要实现150个函数)之前,这是可以的。之后,事情会变得一团糟,您将失去概览。 这就是您将受益于其他机制的地方,如继承、封装或聚合,以及服务和助手类的使用


但是如果你遇到需要实现15+个接口的情况,我会认真地重新考虑你的代码架构。
是的,确实值得一问。这是一个有趣的建议,如何使源文件相互依赖?@Motti:你必须手工编辑项目文件。参见示例。There也是您可以使用的扩展,例如VSCommands,它允许您更轻松地对项目进行分组。visual studio默认情况下使用的一个简单替代方法是区域。我不确定我是否会对接口实现执行此操作,但我以前做过此操作以拆分多个私有嵌套类。