こんにちは、クラスのインターフェイスにコード コントラクトを配置しようとしています。次のようなものを書きます。
[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 in contract を定義することを強制されるのは好きではありません。つまり、次のように記述できます。
get { return "abcdrdkldbfldsk"; }
書くことができないという理由だけで、内部クラスでパブリックプロパティを使用することを余儀なくされるのは好きではありません
get { return ImyClass.Id; }
編集:これは私が書きたいものです:
[ContractClassFor(typeof(IMyClass))]
sealed class MyClassContract : IMyClass
{
int IMyClass.Id
{
set { Contract.Requires(value > 0); }
}
}