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

本文关键字:类型 种类 对象 方法 一个 创建 | 更新日期: 2023-09-27 18:07:32

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

例如,我有对象类型: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);

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

提前感谢您的帮助。

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

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

是的,因为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实现对于每个类型都是完全相同,那么你可以使它成为基类而不是接口,但是由于一个类只能有一个直接的基类,但可以实现多个接口,你需要明智地选择