您好我正在创建一个程序的一部分,我需要返回特定类型的对象列表。代码的问题部分如下。它看起来太多余了,我想要一种简单的方法
switch (sqlDataReader["TypeName"].ToString())
{
case "Manager":
{
yield return new Manager(
sqlDataReader["Employee_ID"].ToString(),
sqlDataReader["Name"].ToString(),
sqlDataReader["ContactInfo"].ToString(),
sqlDataReader["JoinDateTime"].ToString(),
bool.Parse(sqlDataReader["Active"].ToString()),
sqlDataReader["Username"].ToString(),
sqlDataReader["Password"].ToString()
);
break;
}
case "Inventory Manager":
{
yield return new InventoryManager(
sqlDataReader["Employee_ID"].ToString(),
sqlDataReader["Name"].ToString(),
sqlDataReader["ContactInfo"].ToString(),
sqlDataReader["JoinDateTime"].ToString(),
bool.Parse(sqlDataReader["Active"].ToString()),
sqlDataReader["Username"].ToString(),
sqlDataReader["Password"].ToString()
);
break;
}
case "Cashier":
{
yield return new Cashier(
sqlDataReader["Employee_ID"].ToString(),
sqlDataReader["Name"].ToString(),
sqlDataReader["ContactInfo"].ToString(),
sqlDataReader["JoinDateTime"].ToString(),
bool.Parse(sqlDataReader["Active"].ToString()),
sqlDataReader["Username"].ToString(),
sqlDataReader["Password"].ToString()
);
break;
}
}
}
Connection.Close();
}
有没有办法可以避免这种冗余?仅供参考我有一个名为User的抽象基类。
谢谢!
答案 0 :(得分:2)
试试这个:
Type type = Type.GetType(sqlDataReader["TypeName"].ToString());
var instanceOfClass =
Activator.CreateInstance(
type,
sqlDataReader["Employee_ID"].ToString(),
sqlDataReader["Name"].ToString(),
sqlDataReader["ContactInfo"].ToString(),
sqlDataReader["JoinDateTime"].ToString(),
bool.Parse(sqlDataReader["Active"].ToString()),
sqlDataReader["Username"].ToString(),
sqlDataReader["Password"].ToString()
);
通过使用它,您将不需要switch语句。
答案 1 :(得分:1)
您可以使用用于创建对象的所有属性创建新的类或结构UserData,并在构造函数中使用此UserData
a