public abstract class HostFactory<TApp> : ServiceHostFactory where TApp : IFoo
解决方法
– :ServiceHostFactory,HostFactory继承自ServiceHostFactory.
-HostFactory< TApp>,HostFactory是泛型类型,因为它具有TApp的类型参数.每当有人使用HostFactory类时,他们都可以为TApp指定一个类型,这将导致该类型在代码中出现TApp的任何地方使用.因此,如果该类具有TApp GetApp()函数,则它们指定< int>对于TApp,然后GetApp实际上是int GetApp()
-where TApp:IFoo,TApp必须实现IFoo接口(这也可能是一个类,表明它必须从该类继承,而不是必须直接继承).
-abstract,HostFactory是一个抽象类,意味着其他类可以继承它,但是没有代码可以实例化HostFactory本身.这就像我给你一个汽车的框架,并说,你在法律上不允许在路上驾驶它,但欢迎你自己制造一辆自己的汽车.
-public HostFactory是公共的,这意味着它对于声明它的程序集之外的代码是可见的.
编辑:有关泛型的更多信息
我将从MSDN的一个非常重要的引用开始:“泛型是C#2.0最强大的功能.”
当你写一些可以想象适用于许多类型的东西时,你会使用泛型.例如,在我们在2.0中使用泛型之前,我们必须先将所有内容都转换为Object,然后才能将它放入集合中,这非常危险,因为copmpiler无法验证您是否在以后获得了正确的类型集合中的一个项目.使用泛型我们可以做ArrayList< bool>创建bool的ArrayList,现在不需要强制转换.编译器可以验证我们是否将bool放入集合中.
例如,在上面的类中,我们可以编写与实现IFoo的东西一起工作的算法,只知道该对象能够执行IFoo接口所具有的功能.所以我可以编写一个在IFoo接口上调用方法的算法,然后我的算法将来可以被任何实现IFoo接口的人重用.