我正在写一个类来处理我的数据事务。我想创建一个方法来处理多个对象,而不是为每个对象类型使用不同的方法。
例如,假设我有对象类型:Car,Truck,House。每个对象都有一个属性,其中包含应该用于创建数据库的字段和类型的名称。同样,每个对象都有一个名为PrintFieldsWithType()的方法,可以将它们作为SQL查询的一部分打印出来。
我一直在尝试这样的事情:
private void CreateTable(string tblname, Object tempobject)
{
//Construct Command String from Params
string mycommand = "CREATE TABLE " + tblname + tempobject.PrintFieldsWithType();
tempobject = null;
//Construct object and execute query
command = new SQLiteCommand(mycommand, myconnection);
command.ExecuteNonQuery();
}
我希望能够像以下方法一样调用此方法,而不是为每种对象类型创建不同的方法: CreateTable(NewCars,Car myCar); CreateTable(CheapHouses,House myHouse);
我是否试图以错误的方式处理这个问题? 有一个更好的方法吗?
提前感谢您的帮助。
答案 0 :(得分:6)
我是否试图以错误的方式处理这个问题?
是的,因为Object
不包含PrintFieldsWithType
的定义,因此您的代码将无法编译。
有更好的方法吗?
创建一个界面,定义这些类型共有的属性/方法:
public interface IThing //(please come up with a better name)
{
public string PrintFieldsWithType();
}
并让每个类型实现该接口:
public class Car : IThing
等
然后将CreateTable
更改为
private void CreateTable(string tblname, IThing tempobject)
如果PrintFieldsWithType
的实现 完全与每种类型相同那么你可以使它成为基类而不是接口,但是因为一个类只能有一个直接的基类但可以实现多个接口,你需要明智地选择。