我试图弄清楚C#是否支持多级泛型或如何正确执行。基本上我想做以下事情:
public abstract class AbstractPlugin<V, T> : IPlugin
where V : IPluginAccess
where T : IPluginProcessor<V>
基本上我想要使用&#39;声明的类中的一个泛型参数,这是基本的,但我想在子类型上使用另一个参数。
这样的事情可能吗?
感谢。
答案 0 :(得分:1)
是的,有可能,下面的类和接口用于演示这一点。它们可以以多种方式变化。
public interface IPluginAccess { }
public class PluginAccess : IPluginAccess { }
public interface IPluginProcessor<T>{}
public class PluginProcessor : IPluginProcessor<PluginAccess> { }
public interface IPlugin { }
public abstract class AbstractPlugin<V, T> : IPlugin
where V : IPluginAccess
where T : IPluginProcessor<V>
{ }
public class BasicPlugin : AbstractPlugin<PluginAccess,PluginProcessor> { }
你可以像这样使用它。
AbstractPlugin<PluginAccess, PluginProcessor> abstractPlugin = new BasicPlugin();
答案 1 :(得分:0)
如果你的意思是AbstractPlugin<int>
,那么这个问题就解决了AbstractPlugin<IPluginProcessor<int>>
我必须让你失望。你真的要写AbstractPlugin<IPluginProcessor<int>,int>
来使用你的代码。我有类似的代码,我必须这样做。