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是如此不同,而不是使用定义在整个代码,部分接口/类可以实际上分开两个框架之间的差异,仍然保持代码干净+几乎单一来源。
简单而简单:是!
是的,它确实。 部分接口是否在相同的命名空间中定义?
请参阅说明可以在类,结构或接口上使用的文档