有条件地创建对象

时间:2019-02-15 12:16:02

标签: c#

我想知道根据特定条件创建特定类型对象的最佳方法是什么?此时,我有一个if语句,该语句确定将实例化的对象的类型。现在,如果我必须创建另一个类型,这将稍微复杂一些。我想知道如何将其重构以更好地工作。

public Class1
{
    public string Property1;
}

public Class2 : Class1
{
    public string Property2;
}

public Class3 : Class1
{
    public string Property3;
}

public void Save(string property1)
{
    var object;
    if(property1 == "name")
    {
        object = new Class2();
    }
    else
    {
        object = new Class3();
    }
    // do something with the created object
}

1 个答案:

答案 0 :(得分:0)

您可以使用激活器尝试以下方法。 为类

创建映射
Dictionary<string, string> m_Dictionary = new Dictionary<string, string>();//Dictionary

 m_Dictionary.Add("one", "help.Class1");//Add class name with namespace
 m_Dictionary.Add("two", "help.Class2");
 m_Dictionary.Add("three", "help.Class3");

//如下更改保存方法

    public void Save(string property1)
    {
        dynamic   obj ;

        obj= Activator.CreateInstance(Type.GetType((m_Dictionary[property1])));

        MessageBox.Show(obj.GetType().ToString());
    }

希望这有助于进一步重构