确定作为参数发送的对象类型

emr*_*rah 1 c#

我有三个班级,分别称为“人”,“城市”和“区”,以及其他一些班。

我将这三个类之一作为函数参数发送。我要执行的操作取决于发送的这三个中的哪一个。我怎样才能做到这一点?所有这三个类扩展了Entity类。

现在就像:

public void Insert (City newCity)
Run Code Online (Sandbox Code Playgroud)

但我希望它像:

public void Insert (Entity e)
Run Code Online (Sandbox Code Playgroud)

或类似的东西,无论它是(城市还是人),我都想使用它的属性。

谢谢!

Tim*_*ter 5

您可以使其通用:

public void Insert<T>(T entity) where T: Entity
{

}
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用的所有属性或方法Entity。如果您需要使用仅属于子类型的属性或方法,则必须强制转换:

public void Insert<T>(T entity) where T: Entity
{
    if(entity is City)
    {
        City city = (City) entity;
        // ...
    }
    else if(entity is Person)
    {
        Person person = (Person) entity;
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)