我在使用通用接口(interface)时遇到了问题。初始条件如下:
interface Itemplate1
{
...
}
interface Itemplate2<T> where T : Itemplate1
{
...
}
它就像一个魅力!但是,当我继续进行应用程序设计的其余部分时,我注意到 Itemplate1
成员还需要 Itemplate2
。
interface Itemplate1<T> where T : Itemplate2<?>
{
...
}
interface Itemplate2<T> where T: Itemplate1<?>
{
...
}
我该怎么做? 非常感谢
最佳答案
我在 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>
很难说您的代码中是否需要完全相同的模式或类似的东西,但这对我有用。诚然,它有助于自动生成实际的具体实现...
关于c# - 如何定义两个依赖的泛型接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371859/