使用通用接口时遇到问题。初始条件如下:
interface Itemplate1
{
...
}
interface Itemplate2<T> where T : Itemplate1
{
...
}
它就像一个魅力!但是当我继续完成其余的应用程序设计时,我注意到Itemplate1
成员还需要Itemplate2
。
interface Itemplate1<T> where T : Itemplate2<?>
{
...
}
interface Itemplate2<T> where T: Itemplate1<?>
{
...
}
我该怎么办? 非常感谢
答案 0 :(得分:4)
我在my Protocol Buffers port完成了同样的事情。我必须警告你,它最终会有点痛苦,但确实有效。
就我而言,我需要:
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>
很难说你的代码中是否需要完全相同的模式或类似的东西,但这对我有用。无可否认,实际的具体实现是自动生成的......