C#中的部分接口

C#允许部分接口吗? 即在ManagerFactory1.cs类中,我有

public partial interface IManagerFactory { // Get Methods ITescoManager GetTescoManager(); ITescoManager GetTescoManager(INHibernateSession session); } 

并在ManagerFactory.cs类中,我有:

 public partial interface IManagerFactory { // Get Methods IEmployeeManager GetEmployeeManager(); IEmployeeManager GetEmployeeManager(INHibernateSession session); IProductManager GetProductManager(); IProductManager GetProductManager(INHibernateSession session); IStoreManager GetStoreManager(); IStoreManager GetStoreManager(INHibernateSession session); } 

ManagerFactory和ManagerFactory1都位于相同的程序集中。

最简单的方法就是试试:)

但是,部分接口是允许的。

partial修饰符的有效位置(使用C#3.0规范引用):

  • 类(10.1.2)
  • 结构(11.1.2)
  • 接口(13.1.2)
  • 方法(C#3.0+)(10.2.7; 10.6.8)

规范的第10.2节包含部分types的大部分一般细节。

无效位置:

  • 枚举
  • 代表

它确实,但是一个重要的问题是为什么呢?

部分类在那里,以便您可以扩展自动生成的代码。 VS可以生成一个表单文件,或者代码后面,或者Linq to SQL访问器,你可以使用partial来扩展它。

我会避免使用partials只是为了分裂类(或在这种情况下接口)通常会产生更多的困惑,而不是价值。

在这种情况下,我会调查为什么这需要跨越多个文件 – 工厂模式接口可以通过你的代码更复杂的跟踪回来,但在这里你会通过多个文件追溯。

是的, 它的确如此 。

是的,它确实。

部分类和方法(C#编程指南)在MSDN

限制:

  • 所有部分types的接口定义是相同types的部分,必须用partial修改
  • 部分修饰符只能出现在关键字interface之前。
  • 所有部分types的定义是相同types的部分,必须在相同的程序集和相同的模块(.exe或.dll文件)中定义。

当涉及代码生成时,部分接口是主要使用的。 例如,当一个接口的一部分生成,另一个是用户编写的。

在使您的界面部分之前,请仔细考虑 也许最好把它分成两个itnefaces?

保持你的界面小而专注。 部分是代码味道。

尼斯。

我同意这可能是一种气味,但我仍然可以想出一个理由去做。

我目前正在为WPF和Silverlight开发一个应用程序MVVM框架。 而我所遇到的是,WPF和Silverlight是如此不同,而不是使用定义在整个代码,部分接口/类可以实际上分开两个框架之间的差异,仍然保持代码干净+几乎单一来源。

简单而简单:是!

是的,它确实。 部分接口是否在相同的命名空间中定义?

请参阅说明可以在类,结构或接口上使用的文档