如何在C#中向他人提供接口定义的最佳方式是什么?

4
这让我觉得可能有一个最佳实践答案,但我似乎找不到任何相关信息。
我有一个应用程序,将加载和使用实现特定接口的类。实现类将由其他人编写,我想发送他们成功实现接口所需的最少内容。
到目前为止,我能想到的最好方法是:
包含应用程序解决方案: 一个仅包含接口定义并编译为dll的项目。 一个用于使用接口并引用dll的应用程序项目。
为示例实现单独创建一个解决方案,该解决方案构建为dll并引用接口dll。
这是最好的方法吗?即分发接口的编译版本给任何需要实现接口的人。
我尝试在示例实现中仅使用接口源文件的副本,但我的应用程序无法识别该类作为实现接口。这是可以预期的,还是我的类加载代码有问题(当示例引用预编译的dll时,它确实有效)?

1
请查看此帖子以获取解释:https://dev59.com/r3I-5IYBdhLWcg3wEEHu - Muhammad Akhtar
我不喜欢将接口放在单独的程序集中。 - Akram Shahda
2个回答

3
您应该将您的接口放在一个程序集中,然后分发您的程序集(或整个项目,如果需要),这样其他想要实现该接口的人只需引用您的程序集即可访问相同的接口。 如果您只发送接口文件(.cs),则该接口将嵌入到另一个程序集中,并且很可能具有另一个命名空间或程序集名称。这就是为什么您的实现类没有被识别为继承您的接口,因为基本上它们不是同一个接口,即使方法和属性相同。如果您不希望其他人更改您的代码并只使用接口,则我认为您的第一种方法是最好的。否则,只需共享包含接口的整个项目即可。

0

这是我使用的方法,也在其他项目中看到过 - 给共享程序集一个通用名称,例如MyApp.Interfaces,以防您最终拥有多个共享接口。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接