我有三个班级,分别称为“人”,“城市”和“区”,以及其他一些班。
我将这三个类之一作为函数参数发送。我要执行的操作取决于发送的这三个中的哪一个。我怎样才能做到这一点?所有这三个类扩展了Entity类。
现在就像:
public void Insert (City newCity)
Run Code Online (Sandbox Code Playgroud)
但我希望它像:
public void Insert (Entity e)
Run Code Online (Sandbox Code Playgroud)
或类似的东西,无论它是(城市还是人),我都想使用它的属性。
谢谢!
您可以使其通用:
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)