【发布时间】:2019-07-22 06:54:46
【问题描述】:
我有一个接口,它由许多类实现。每个类也有自己的一组属性,这些属性不存在于接口中。现在,如果我想设计一个返回接口类型的工厂,我不能设置一些派生类属性,因为它们不是接口的成员。
如何解决这种情况?
【问题讨论】:
-
一种方法是使用工厂方法泛型
-
您能否提供任何描述工厂方法泛型的链接?
-
这不是真的。您可以创建并返回实现返回类型的超类型接口的任何派生类型的实例。必须向下转换返回值才能获得原始子类型。不推荐使用泛型类型描述返回类型的泛型工厂。这是一种反模式,因为您必须在工厂内部执行类型检查才能选择要返回的正确实例。为每种分解的返回类型引入一个专门的工厂会更方便。
标签: c# design-patterns factory