我应该在接口程序集中有异常类型吗?最佳实践?

Should i have Exception-Types in Interface-Assembly? Best practices?

我有一个程序集,它只包含接口以避免不必要的依赖。现在我有一个名为 UndefinedIHttpMacTokenException 的异常类型。因此,如您所见,异常涉及 IHttpMacToken 的接口类型。现在我认为最好在接口程序集中包含异常类型。但这有点矛盾。如果您听到程序集名称 (somenamespace.Interfaces)。您不会期望它包含 class-types(exceptions).

那你能帮帮我吗?在这种情况下,最佳做法是什么? 感谢您的努力。

如果您的接口的实现预计会在某些特定情况下抛出某些异常,那么相应的异常应该是包含接口的程序集的一部分。从某种意义上说,代码抛出的异常是程序集接口的一部分,即使异常由 类 表示,而不是由接口表示。

此外,如果您的接口使用了您不允许用户扩展的特定 类(即密封 类),您也应该包括这些 类。最后,所有 enum 也应该是程序集的一部分。

查看 System.Data 程序集,了解 .NET 的主要组件如何执行此操作的一个很好的示例。该程序集的主要目的是提供十五个接口,用于从 .NET 访问数据库。所有异常 类、类 用作参数和 return 值,并且 enum 也是 System.Data 的一部分。