我应该在接口程序集中有异常类型吗?最佳实践?
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
的一部分。
我有一个程序集,它只包含接口以避免不必要的依赖。现在我有一个名为 UndefinedIHttpMacTokenException
的异常类型。因此,如您所见,异常涉及 IHttpMacToken
的接口类型。现在我认为最好在接口程序集中包含异常类型。但这有点矛盾。如果您听到程序集名称 (somenamespace.Interfaces)。您不会期望它包含 class-types(exceptions).
那你能帮帮我吗?在这种情况下,最佳做法是什么? 感谢您的努力。
如果您的接口的实现预计会在某些特定情况下抛出某些异常,那么相应的异常应该是包含接口的程序集的一部分。从某种意义上说,代码抛出的异常是程序集接口的一部分,即使异常由 类 表示,而不是由接口表示。
此外,如果您的接口使用了您不允许用户扩展的特定 类(即密封 类),您也应该包括这些 类。最后,所有 enum
也应该是程序集的一部分。
查看 System.Data
程序集,了解 .NET 的主要组件如何执行此操作的一个很好的示例。该程序集的主要目的是提供十五个接口,用于从 .NET 访问数据库。所有异常 类、类 用作参数和 return 值,并且 enum
也是 System.Data
的一部分。