2

我正在编写一个类来处理我的数据事务。我想创建一种方法来处理多个对象,而不是为每种对象类型使用不同的方法。

例如,假设我有对象类型:汽车、卡车、房屋。每个对象都有一个属性,该属性保存应该用于创建数据库的字段和类型的名称。同样,每个对象都有一个名为 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);

我是否试图以错误的方式处理这个问题?
有一个更好的方法吗?

在此先感谢您的帮助。

4

1 回答 1

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则可以将其设为基类而不是接口,但是由于一个类只能有一个直接基类但可以实现多个接口,因此您需要明智地选择。

于 2013-04-05T19:41:31.540 回答