我在使用通用接口时遇到了一个问题。初始条件如下:
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>
很难说你的代码中是否需要完全相同的模式,或者只是类似的东西,但这对我来说是有效的。不可否认,它有助于实际的具体实现是自动生成的…