.net 仅对用作依赖项的导出接口依赖契约是一个坏主意吗?
首先,我喜欢代码契约,但有一个想法让我有点困惑: My class.net 仅对用作依赖项的导出接口依赖契约是一个坏主意吗?,.net,code-contracts,.net,Code Contracts,首先,我喜欢代码契约,但有一个想法让我有点困惑: My classMyClass使用依赖项作为接口IDependency,为其声明了契约类(内部抽象类IDependencyContracts),并且我的类严重依赖于这些契约。我不保证客户代码提供的接口的自定义实现会强制执行合同。 据我所知,我只能在程序集中的类上强制契约,但我无法控制客户机代码程序集 然后我必须在代码中使用Contract.Assert(),在代码中使用接口来检查返回的结果是否符合预期 你说得对。如果您界面的消费者也在使用合同,他
MyClass
使用依赖项作为接口IDependency
,为其声明了契约类(内部抽象类IDependencyContracts
),并且我的类严重依赖于这些契约。我不保证客户代码提供的接口的自定义实现会强制执行合同。据我所知,我只能在程序集中的类上强制契约,但我无法控制客户机代码程序集
然后我必须在代码中使用
Contract.Assert()
,在代码中使用接口来检查返回的结果是否符合预期 你说得对。如果您界面的消费者也在使用合同,他们当然会感谢您。如果他们不使用合同,他们可能会陷入困境
这就是为什么在这种情况下我会使用Contract.aspect(),即使Contract.Assert()可以被证明。为了我自己,我会用假设来提醒别人可能违反合同