C# 这在类声明中意味着什么?

C# 这在类声明中意味着什么?,c#,C#,我在浏览Github时,注意到C#中的一个界面具有以下内容: public interface IAction : IPrototype<IAction> 公共接口IAction:IPrototype 我以前从未见过这种情况。所以我很好奇这到底意味着什么,或者它是做什么的,这是否适用于接口以外的东西 这是针对特定行为的C#特定语法吗?(在其他OOP语言中有用吗) 抱歉,如果这真的是一个很难回答的问题,但我甚至不知道它叫什么,所以我无法准确地找出如何简单地用谷歌搜索它:p这意味着I

我在浏览Github时,注意到C#中的一个界面具有以下内容:

public interface IAction : IPrototype<IAction>
公共接口IAction:IPrototype
我以前从未见过这种情况。所以我很好奇这到底意味着什么,或者它是做什么的,这是否适用于接口以外的东西

这是针对特定行为的C#特定语法吗?(在其他OOP语言中有用吗)


抱歉,如果这真的是一个很难回答的问题,但我甚至不知道它叫什么,所以我无法准确地找出如何简单地用谷歌搜索它:p

这意味着
IAction
继承了一个通用
IPrototype
接口,其中类型是
IAction
IPrototype
可以定义一个成员来消费或产生一个
T
,在这种情况下,它将是一个
IAAction
它是一个继承自a的接口。

对我来说,这看起来像是一个通过实现奇怪的递归模板模式来实施原型模式的接口。更多信息可以在这里找到

本质上,您可以定义一个接口,该接口包含返回或使用实现者强类型实例的方法。如果没有该模式,您最好返回一个基本接口的实例

原型模式是一种允许克隆类的模式,因此我猜
IPrototype
接口有一个名为
Clone
的方法,它返回
T
。在这种情况下,它将返回
IAction

公共接口IPrototype,其中T:IPrototype
{
//强制执行返回子类的克隆方法
T克隆();
}

可能包含一些线索。您询问的是哪一部分:泛型类型参数(
)还是
IAction
出现在
的两侧?听起来你对C#includes接口的了解还不错,但不清楚你是不知道它是泛型还是它们的这种特殊用法。除此之外,我还想提到原型模式和奇怪的递归模板模式。我相信这就是《守则》背后的意图。希望这能补充您对语言结构的解释。