我正在尝试创建一个使用类类型列表的类工厂,调用重写方法来查找与条件匹配的类,然后返回"匹配"的实例。类。我目前正在使用类实例列表,这是好的,但使用类型似乎更干净。否则,我们每次实际使用该类时都需要重新初始化实例,以便清理"内部工作变量。多态性是否适用于静态方法和类型?我经常使用多态,但之前没想过以这种方式接近它。
我简化的当前代码是这样的:
public static List<RatingEngineBase> RatingEngineList = new List<RatingEngineBase>();
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_ATT());
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_Coldiron());
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_Prestige());
RatingEngineList.Add(new RE_PPL_DTNA_MtHolly_ATT());
foreach(RatingEngineBase RatingEngine in RatingEngineList)
{
if (RatingEngine.OrderItemToRatePathMatch(anOrderItemToRate))
{
RatingEngine.OrderItemToRate = anOrderItemToRate;
return RatingEngine;
}
}
但我觉得如果我能做的话会更清洁:
public static List<typeof(RatingEngineBase)> RatingEngineTypeList = new List<typeof(RatingEngineBase));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_ATT));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_Coldiron));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_Prestige));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_MtHolly_ATT));
然后遍历类型列表,调用重写的静态OrderItemToRatePathMatch,然后创建并返回匹配的实例。
希望这有助于解释我的问题。