GenericRecommendationForm

GenericRecommendationForm

我正在尝试改进我编写的一段代码,但需要您的帮助。

基本上,我有2个从TypeARecommendationForm继承的类TypeBRecommendationFormGenericRecommendationForm,我正在尝试将对象oRecommendation复制到新对象中。

为此,我正在检查类型以查看要使用的类。

问题是,有时我会创建从GenericRecommendationForm继承的新类,并且必须遍历所有代码以查看将这些if语句添加到何处,因为我在多个地方都有它们。

我想要的是类列表,以便在添加新类时,只需将其添加到列表中即可。

有人知道这样做的方法吗?

这是代码:

GenericRecommendationForm oRecommendation= new GenericRecommendationForm ();
...
if (oRecommendation.GetType() == typeof(TypeARecommendationForm))
{
    recommendationForm = new TypeARecommendationForm((TypeARecommendationForm)oRecommendation);
}
if (oRecommendation.GetType() == typeof(TypeBRecommendationForm))
{
    recommendationForm = new TypeBRecommendationForm((TypeBRecommendationForm)oRecommendation);
}
else if (oRecommendation.GetType() == typeof(GenericRecommendationForm))
{
    recommendationForm = new GenericRecommendationForm(oRecommendation);
}


在此先感谢您的帮助。

最佳答案

实现此目的的最简单方法是为您的GenericRecommendationForm提供一个虚拟的Clone方法,所有派生表单都将其覆盖。

public class GenericRecommendationForm
{
    // ...

    public virtual GenericRecommendationForm Clone()
    {
        return new GenericRecommendationForm(this);
    }
}

public class TypeARecommendationForm
{
    // ...

    public override GenericRecommendationForm Clone()
    {
        return new TypeARecommendationForm(this);
    }
}

public class TypeBRecommendationForm
{
    // ...

    public override GenericRecommendationForm Clone()
    {
        return new TypeBRecommendationForm(this);
    }
}

09-10 02:48