【发布时间】:2013-07-17 17:44:07
【问题描述】:
我设计了一个有一个接口和两个继承类的应用程序:
interface IPerson {}
class Man:IPerson{}
class Woman:IPerson{}
现在,我写了一个如下所示的方法:
public IPerson GetPeron(int idNumber);
此方法获取一个 ID 号并在 DB 中查找该号码。如果该号码属于一个人,则会创建一个新的人实例,将数据库中的数据放入新实例中,最后实例返回。如果给定的 ID 属于女性,情况也是如此
现在我希望该方法不是放在客户端,而是放在 WCF 服务器上。问题是返回类型不能再是接口了。
显而易见的解决方案是创建三个方法:
A.获取一个 ID 并返回一个代表人员类型的枚举:
enum PersonType { Man,Woman }
PersonType GetType(int personID);
B.获取一个 ID 并返回一个 Man:
Man GetMan(int personID);
C.获取 ID 并返回一个女人:
Woman GetWoman(int personID);
我认为这有点糟糕,有更好的建议吗?
【问题讨论】:
-
你应该尝试泛型,比如 public T GetPerson(int id) where T is IPerson and Iserializable