创建一个接受多种类型对象的C#方法?

Ree*_*eed 2 c# oop

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

例如,假设我有对象类型: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();
    }
Run Code Online (Sandbox Code Playgroud)

我希望能够将此方法称为:CreateTable(NewCars,Car myCar);而不是为每种对象类型创建不同的方法.CreateTable(CheapHouses,House myHouse);

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

在此先感谢您的帮助.

D S*_*ley 6

我试图以错误的方式处理这个问题吗?

是的,因为Object不包含定义,PrintFieldsWithType因此您的代码将无法编译.

有一个更好的方法吗?

创建一个接口,定义这些类型共有的属性/方法:

public interface IThing //(please come up with a better name)
{
    public string PrintFieldsWithType();
}
Run Code Online (Sandbox Code Playgroud)

并让每个类型实现该接口:

public class Car : IThing
Run Code Online (Sandbox Code Playgroud)

等等

然后CreateTable改为

private void CreateTable(string tblname, IThing tempobject)
Run Code Online (Sandbox Code Playgroud)

如果执行PrintFieldsWithType正好每种类型一样,那么你可以把它的基类,而不是一个接口,而是因为一个类只能有一个直接的基类,但可以实现多个接口,你需要做出明智的选择.