在C#中为其他人提供接口定义的最佳方法是什么?

时间:2011-05-29 09:24:46

标签: c# interface

这让我觉得很可能有一个商定的最佳实践答案,但我似乎无法在任何地方找到。

我有一个应用程序,它将加载和使用实现特定接口的类。实现类将由其他人编写,我希望将它们发送到成功实现接口所需的最小值。

到目前为止,我提出的最好的是以下内容:

包含以下内容的应用解决方案: 一个只包含接口定义并编译为dll的项目。 应用程序的项目,它使用接口并引用dll。

用于构建到dll并引用接口dll的示例实现的单独解决方案。

这是最好的方法吗?即将编译版本的接口分发给需要实现该接口的任何人。

我尝试在示例实现中仅使用接口源文件的副本,但我的应用程序未能将该类识别为实现接口。这是预期的还是我的类加载代码有问题(当示例引用预编译的dll时它确实有效)?

2 个答案:

答案 0 :(得分:3)

你应该把你的界面放在一个程序集中,然后分发你的程序集(或者你需要的整个项目),这样其他想要实现界面的人只需要引用你的程序集,这样他们就可以访问同一个界面了(如果您只是发送接口(.cs)文件不是这种情况,因为您的接口将嵌入到另一个程序集中,因此肯定会有另一个名称空间或程序集名称,这就是为什么您的实现类未被识别为继承您的接口的原因基本上即使方法和属性相同,它也不是相同的界面;))

我认为如果您不希望别人更改您的代码并使用界面,那么您的方法首先是最好的

否则只需共享包含界面的整个项目

答案 1 :(得分:0)

这是我使用的方法,并且在其他项目中看到 - 为共享程序集提供一个通用名称,例如MyApp.Interfaces,以防最终出现多个共享接口。

另一种方法是使用托管扩展性框架:http://msdn.microsoft.com/en-us/library/dd460648.aspx - 但这对于一个小项目来说可能有点过分。