是否可以在C#中使用多个级别的泛型?

时间:2015-04-22 13:33:23

标签: c# generics

我试图弄清楚C#是否支持多级泛型或如何正确执行。基本上我想做以下事情:

public abstract class AbstractPlugin<V, T> : IPlugin
where V : IPluginAccess
where T : IPluginProcessor<V>

基本上我想要使用&#39;声明的类中的一个泛型参数,这是基本的,但我想在子类型上使用另一个参数。

这样的事情可能吗?

感谢。

2 个答案:

答案 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>来使用你的代码。我有类似的代码,我必须这样做。