如何定义两个相关的泛型接口



我在使用通用接口时遇到了一个问题。初始条件如下:

interface Itemplate1
{
    ...
}
interface Itemplate2<T> where T : Itemplate1
{
    ...
}

真是太神奇了!但是当我继续做我的应用程序设计的其余部分时,我注意到Itemplate1成员也需要Itemplate2

interface Itemplate1<T> where T : Itemplate2<?>
{
    ...
}
interface Itemplate2<T> where T: Itemplate1<?>
{
    ...
}

我该怎么做?非常感谢

我已经在我的协议缓冲区端口做了完全相同的事情。我必须警告您,它最终会有点痛苦,但它确实有效。

在我的例子中,我需要:

public interface IMessage<TMessage, TBuilder>
    where TMessage : IMessage<TMessage, TBuilder>
    where TBuilder : IBuilder<TMessage, TBuilder>

public interface IBuilder<TMessage, TBuilder>
    where TMessage : IMessage<TMessage, TBuilder>
    where TBuilder : IBuilder<TMessage, TBuilder>
很难说你的代码中是否需要完全相同的模式,或者只是类似的东西,但这对我来说是有效的。不可否认,它有助于实际的具体实现是自动生成的…

最新更新