我试图将多个通用接口作为参数传递给我的类之一的构造函数。
以下代码无法编译:
public interface IPosterGenerator<T>
{
IQueryable<T> GetPosters();
}
public class Pinboard
{
public Pinboard(IPosterGenerator<A> firstPosterGenerator, IPosterGenerator<B> secondPosterGenerator, IPosterGenerator<B> thirdPosterGenerator)
{
}
}
我有大约一百种不同类型的海报生成器。它们都继承自 IPosterGenerator 接口。当我实例化一个新的 Pinboard 时,我需要将三个 IPosterGenerator 传递给 pinboard 的构造函数。然而,这三个 IPosterGenerator 中的每一个都属于不同的类型。这就是为什么我想出了这个愚蠢的A、B和C。
这完全可以做到吗?
听起来你可能想做Pinboard
通用的:
public class Pinboard<T1, T2, T3>
{
public Pinboard(IPosterGenerator<T1> generator1,
IPosterGenerator<T2> generator2,
IPosterGenerator<T3> generator3)
{
...
}
}
为了更方便地拨打电话,您可以also使用泛型方法创建一个非泛型类:
public static class Pinboard
{
public static Pinboard<T1, T2, T3> Create(IPosterGenerator<T1> generator1,
IPosterGenerator<T2> generator2,
IPosterGenerator<T3> generator3)
{
return new Pinboard<T1, T2, T3>(generator1, generator2, generator3);
}
}
然后,如果你已经有了生成器,你可以调用:
// Or whatever...
var board = Pinboard.Create(bigGenerator, smallGenerator, mediumGenerator);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)