2013-04-05 70 views
2

我在写一个类来处理我的数据事务。我想创建一个方法来处理多个对象,而不是每个对象类型都有不同的方法。创建一个接受多种类型的对象的C#方法?

例如,假设我有对象类型:汽车,卡车,房子。每个对象都有一个属性,其中包含应该用于创建数据库的字段和类型的名称。同样,每个对象都有一个名为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,租车myCar) ; CreateTable(CheapHouses,House myHouse);

我试图以错误的方式处理这个问题吗?
有没有更好的方法来做到这一点?

在此先感谢您的帮助。

回答

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正是同为每种类型的,那么你可以把它的基类,而不是一个接口,而是因为一个类只能有一个直接的基类,但可以实现多个接口,你需要明智地选择。

+0

'IFieldsWithTypePrinter'? ^^ – poke 2013-04-05 19:42:28

+0

这就是接口的用途。谢谢! – Reed 2013-04-05 19:57:54

相关问题