我遇到了方法返回类型的问题。如何在方法中返回动态返回类型? C#
该方法返回一个linq对象,它目前返回类型tblAppointment。此方法如下所示:
public tblAppointment GetAppointment(int id)
{
var singleAppointment = (from a in dc.tblAppointments
where a.appID == id
select a).SingleOrDefault();
return singleAppointment;
}
问题是tblAppointment是抽象的,并且有很多子类型会继承它。当我尝试返回类型为“appointmentTypeA”的对象并调用它的.GetType()方法时,它给了我正确的子类型,但是当我尝试访问属性时,它只允许我访问父属性。如果我把这个对象转换成一个子类型的新对象,那么它就可以工作,并让我访问我需要的所有东西,但看起来很乱。
var viewSingleAppointment = appointmentRepos.GetAppointment(appointmentId);
Debug.Write(viewSingleAppointment.GetType()); //returns type i want
if (viewSingleAppointment is tblSingleBirthAppointment)
{
tblSingleBirthAppointment myApp = (tblSingleBirthAppointment)viewSingleAppointment; //need to do this to access TypeA properties for some reason
}
编辑:我有这个工作,但我需要使用select语句每次约会(约20),并将其转换为相应的类型和retreive属性和林不知道如何重构这个,因为它将在我们正在做的几页上使用。
定义'protected abstract void tblAppointment.Process()'并在每个类中覆盖它,然后使用'appointmentRepos.GetAppointment(id).Process()'。 – 2009-10-01 10:39:17