如何定义两个依赖的通用接口?

时间:2011-09-10 13:02:04

标签: c#

使用通用接口时遇到问题。初始条件如下:

interface Itemplate1
{
    ...
}

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

它就像一个魅力!但是当我继续完成其余的应用程序设计时,我注意到Itemplate1成员还需要Itemplate2

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

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

我该怎么办? 非常感谢

1 个答案:

答案 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>

很难说你的代码中是否需要完全相同的模式或类似的东西,但这对我有用。无可否认,实际的具体实现是自动生成的......