gpt4 book ai didi

.net - 代码契约(Contract) : How do I supply a contract class for a generic interface?

转载 作者:行者123 更新时间:2023-12-03 08:39:52 24 4
gpt4 key购买 nike

我想为这个通用接口(interface)指定一个契约(Contract),使用代码契约(Contract):

interface IRandomWriteAccessible<T>
{
T this[uint index] { set; }
uint Length { get; }
}

文档说使用 ContractClass为接口(interface)指定契约时的属性。但是,编译器会提示这个:
[ContractClass(typeof(IRandomWriteAccessibleContract<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
interface IRandomWriteAccessible<T> { … }

[ContractClassFor(typeof(IRandomWriteAccessible<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
sealed class IRandomWriteAccessibleContract<T> : IRandomWriteAccessible<T> { … }

似乎类型参数不能与属性一起使用。

如何为我的通用接口(interface)编写契约(Contract)?还是代码契约(Contract)不可能做到这一点?

最佳答案

正如此问题中的其他评论所述,您应该从属性使用中删除泛型类型标识符,因为它无法在编译时解决:

[ContractClass(typeof(IRandomWriteAccessibleContract<>))] 

关于.net - 代码契约(Contract) : How do I supply a contract class for a generic interface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com