[在c#中实现Factory方法时,我有几个具体的产品,比如ConcretProductA
和ConcretProductB
,其中每个ConcretProduct
都有一个公共字符串Name。我面临的问题是我需要创建所有ConcretProducts
名称的列表。例如,此列表将用于使用户能够在运行时在组合框中选择一种产品。
因此,我需要具有读取所有ConcretProducts
名称的能力,而无需为所有可用的concretProducts
实例化实例,读取名称(我很可能必须使其静态)并将其存储在例如枚举中。如果不是直接可以,该界面可以帮助我吗?
这行得通吗?还是有更好的解决方案?
我可以想到3个解决方案:
a)我将尝试找到一种将产品名称存储在单独列表中的方法。
b)一种可能性是使用反射。如果所有产品都派生自基本类型,则可以从程序集中加载所有派生类型,并将名称传播到UI。
c)您也可以将属性放在类上。这样,您可以将易读的名称放置在UI上,而无需进行转换。
解决方案b和c的问题在于,没有分离的关注点,尤其是对于c而言,因为您的域层必须知道产品的显示名称。本地化也可能变得非常困难