我遇到了方法返回類型的問題。如何在方法中返回動態返回類型? 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