Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 仅对用作依赖项的导出接口依赖契约是一个坏主意吗?_.net_Code Contracts - Fatal编程技术网

.net 仅对用作依赖项的导出接口依赖契约是一个坏主意吗?

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

首先,我喜欢代码契约,但有一个想法让我有点困惑:

My class
MyClass
使用依赖项作为接口
IDependency
,为其声明了契约类(
内部抽象类IDependencyContracts
),并且我的类严重依赖于这些契约。我不保证客户代码提供的接口的自定义实现会强制执行合同。
据我所知,我只能在程序集中的类上强制契约,但我无法控制客户机代码程序集


然后我必须在代码中使用
Contract.Assert()
,在代码中使用接口来检查返回的结果是否符合预期

你说得对。如果您界面的消费者也在使用合同,他们当然会感谢您。如果他们不使用合同,他们可能会陷入困境

这就是为什么在这种情况下我会使用Contract.aspect(),即使Contract.Assert()可以被证明。为了我自己,我会用假设来提醒别人可能违反合同