嗨,我试图将我的代码合同放在我班级的接口上,我写了这样的东西:
[ContractClass(typeof(MyClassContract))]
interface IMyClass
{
int Id { get; set; }
}
[ContractClassFor(typeof(IMyClass))]
sealed class MyClassContract : IMyClass
{
public int Id
{
get { return Id; }
set { Contract.Requires(value > 0); }
}
}
public class MyClass : IMyClass
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
}
但不喜欢被迫定义一个永远不会使用的合同,这意味着我可以把它写成
get { return "abcdrdkldbfldsk"; }
并且不喜欢仅仅因为不会写就被迫在内部类中使用公共属性
get { return ImyClass.Id; }
编辑:这就是我想写的:
[ContractClassFor(typeof(IMyClass))]
sealed class MyClassContract : IMyClass
{
int IMyClass.Id
{
set { Contract.Requires(value > 0); }
}
}