这个让我难住了。我在合同适用的方法是接口实现的场景中使用代码合同。因此,我使用抽象的 ContractClassFor 方法来定义合同要求。这适用于其中一个实现类(它恰好与接口在同一个项目中),但合同永远不会应用于第二个实现(它在一个单独的项目中)。两个项目具有相同的代码合同设置(标准合同要求;完整的运行时合同检查)。这是代码中的场景:
namespace First.Interfaces {
[ContractClass(typeof(ContractForIMyClass))]
public interface IMyClass {
void MyMethod(int id);
}
[ContractClassFor(typeof(IMyClass))]
public abstract class ContractForIMyClass : IMyClass
{
void MyMethod(int id) {
Contract.Requires<ArgumentException>(id != 0);
}
}
}
namespace First {
public class MyClass : IMyClass {
public void MyMethod(int id) {
//contract is applied here
}
}
}
namespace Second {
public class MyTestClass : IMyClass {
public void MyMethod(int id) {
//contract is not applied
}
}
}
任何想法都非常感谢。