【问题标题】:What's the best way to provide an interface definition to others in C#?在 C# 中向其他人提供接口定义的最佳方式是什么?
【发布时间】:2011-09-04 05:54:24
【问题描述】:

这让我觉得很可能有一个公认的最佳实践答案,但我似乎在任何地方都找不到。

我有一个应用程序,它将加载和使用实现特定接口的类。实现类将由其他人编写,我想向他们发送成功实现接口所需的最低限度。

到目前为止,我想出的最好的方法如下:

应用解决方案包含: 仅包含接口定义并编译为 dll 的项目。 使用接口并引用 dll 的应用程序项目。

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

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

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

【问题讨论】:

标签: c# interface


【解决方案1】:

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

如果您不希望人们更改您的代码而只使用界面,我认为您的方法首先是最好的

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      相关资源
      最近更新 更多