コードコントラクトを使用して、このジェネリックインターフェイスのコントラクトを指定したいと思います。
interface IRandomWriteAccessible<T>
{
T this[uint index] { set; }
uint Length { get; }
}
ドキュメントにはContractClass
、インターフェイスのコントラクトを指定するときに属性を使用するように記載されています。ただし、コンパイラはこれについて文句を言います。
[ContractClass(typeof(IRandomWriteAccessibleContract<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
interface IRandomWriteAccessible<T> { … }
[ContractClassFor(typeof(IRandomWriteAccessible<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
sealed class IRandomWriteAccessibleContract<T> : IRandomWriteAccessible<T> { … }
タイプパラメータを属性と一緒に使用できないようです。
ジェネリックインターフェイスのコントラクトを作成するにはどうすればよいですか?または、これはコードコントラクトでは不可能ですか?