我正在構建一個協議處理程序。該協議可能支持一組未知的請求類型,並且我將有一個實現每個請求類型的類。這些請求處理程序類將擴展一個基本處理程序類。我試圖構建系統,以便支持新的請求類型,我所需要做的就是爲其添加一個類並重新編譯/部署/重新啓動服務。如何使用反射和抽象對象來動態加載類?
所以我有這樣的事情:
foreach (Type classType in protocolAssembly.GetTypes())
{
if (classType.BaseType == typeof(ProtocolRequestHandler))
{
if (supportedRequestsMap.Contains(classType.Method))
{
// error: that method is already implemented!
}
supportedRequestsMap.Add(classType.Method, typeof(classType));
}
}
添加一個新的類拿起服務重新啓動時,只要處理請求方法聲明。
我怎麼可以在編譯時通過強制執行通過基類ProtocolRequestHandler,物業方法將實施?我不想將方法類型用作「Null」或「Unknown」,或者拋出異常,並且我不想在擴展類的名稱中固有地指定支持的協議請求類型(我想調用無論我喜歡什麼類)。
有沒有辦法強制一個屬性的值設置在繼承類中?
有沒有更清潔的方式我可以做這種動態加載?我應該使用屬性來確定繼承類的受支持的方法嗎?
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –