我想知道根据特定条件创建特定类型对象的最佳方法是什么?此时,我有一个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
}
答案 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());
}
希望这有助于进一步重构