gpt4 book ai didi

c# - 将接口(interface)上的通用参数限制为子类

转载 作者:可可西里 更新时间:2023-11-01 09:07:35 25 4
gpt4 key购买 nike

以下是人为设计的,但请耐心等待:

interface Clonable<TSubClass>
{
TSubClass Clone();
}

如何限制 TSubClass 为实现类型?

即只让实现者这样做:

class Dog : Clonable<Dog>
{
Dog Clone()
{
....
}
}

不是这个:

class BadDog : Clonable<Rabbit>
{
Rabbit Clone()
{
....
}
}

最佳答案

can't只有通过约定和文档才能强制执行....

我的惯例是使用类似 TSelf 的东西。

interface ICloneable<TSelf> where TSelf : ICloneable<TSelf> { ... }

另请注意,任何实现或继承此接口(interface)的非具体构造都应通过...传递约束

[Serializable]
abstract class SerializableCloneable<TSelf> : ICloneable<TSelf>
where TSelf : SerializableCloneable<TSelf> { ... }

注意:我已在 NRoles 中实现了此检查使用调用您的 self-type parameter S 的惯例.

关于c# - 将接口(interface)上的通用参数限制为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569857/

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