Je voudrais spécifier un contrat pour cette interface générique, en utilisant des contrats de code:
interface IRandomWriteAccessible<T>
{
T this[uint index] { set; }
uint Length { get; }
}
La documentation dit d'utiliser l'attribut ContractClass
lors de la spécification d'un contrat pour une interface. Cependant, le compilateur se plaindra à ce sujet:
[ContractClass(typeof(IRandomWriteAccessibleContract<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
interface IRandomWriteAccessible<T> { … }
[ContractClassFor(typeof(IRandomWriteAccessible<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
sealed class IRandomWriteAccessibleContract<T> : IRandomWriteAccessible<T> { … }
Il semble que les paramètres de type ne peuvent pas être utilisés avec des attributs.
Comment puis-je écrire un contrat pour mon interface générique? Ou n'est-ce pas possible avec les contrats de code?