我想知道什么是根据特定条件创建特定类型的对象的最佳方法?在这一点上,我有一个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
}
您可以使用激活器尝试以下方法。为类创建映射
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());
}
希望这有助于进一步重构