gpt4 book ai didi

c# - 通用接口(interface)的嵌套契约

转载 作者:太空狗 更新时间:2023-10-29 17:59:23 28 4
gpt4 key购买 nike

我可以为非通用接口(interface)设置嵌套契约类型:

[ContractClass(typeof(Foo.FooContracts))]
public interface IFoo
{
string Bar(object obj);
}

但是当我尝试使用通用接口(interface)做同样的事情时它会提示:

[ContractClass(typeof(Foo.FooContracts<>))]
public interface IFoo<T>
{
string Bar(T obj);
}

警告是:

The contract class Foo+FooContracts`1 and the type IFoo`1 must have the same declaring type if any.

如果我从 Foo 类中获取 FooContracts,它会在没有警告的情况下编译。

  • 为什么通用接口(interface)存在这种限制?
  • 为什么非通用的不存在这种限制?

最佳答案

存在限制的原因是我们需要将合​​约从声明点复制到插入点,如果有通用的周围类,这会变得更加复杂。确实没有必要将契约类嵌套在我看到的其他类型中。

关于c# - 通用接口(interface)的嵌套契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913117/

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