【发布时间】:2017-09-29 22:21:43
【问题描述】:
我有三个类,分别称为 Person、City 和 District,以及其他一些类。
我将这三个类之一作为函数参数发送。我想做一个操作取决于这三个中的哪一个已经发送。我怎样才能做到这一点?所有这三个类都扩展了一个实体类。
现在是这样的:
public void Insert (City newCity)
但我希望它是这样的:
public void Insert (Entity e)
或类似的东西,无论是什么(城市或人),我都想使用它的属性。
谢谢!
【问题讨论】:
-
假设多态是不可能的(即
e.DoTheThing(...);),那么可能是if(e is City) {...} else if (e is Person) {...} else if (e is District) {...}? -
在没有更多代码的情况下,有点难以猜出你在这里做什么。但请查看
is或as运算符以确定您正在处理的类型/类的类型。 -
为什么不直接使用
Insert的三个重载?对方法的参数进行类型检查似乎很奇怪,而不仅仅是为每个实体使用不同的方法...... -
@Christian.K 我正在简单地制作一个具有分层架构的数据库应用程序,只是为了学习。而在Presentation层,如果用户想添加一个Person,我会从用户那里获取信息并将它们用于业务和数据层。并确定它是哪个实体并在数据层中使用它以将其添加到数据库中。
-
@Chris 我想过,但是,我至少有 4 个操作,例如更新、删除、选择等。如果我也对其他方法使用重载,会不会有点复杂?另外,我想学习我问的方式。
标签: c#