2016-03-20 48 views
0

我想用Dictionary中的一個通用參數存儲代表(Action),如果可能,我想避免任何代碼嗅覺 關於向下/向上轉換。如何在字典中使用不同參數存儲通用動作?

基本上我正在實現某種請求/響應回調管理器,用戶從 REST API請求某些東西,併爲我提供了一個具有正確響應對象的回調。簡而言之,用戶調用該方法看起來像這樣:

void GetUser(int id, Action<GetUserResponse> callback);

我的話,發出請求和回調保存到我的「回調管理器」。當來自服務器 的響應進入(主要是json)時,我將它解析爲一個GetUserResponse對象並觸發回調。但有很多不同的 具有不同響應對象和回調管理器的請求必須優先考慮它們(以及其他一些東西) 而不是每個存儲該請求的回調的單個請求都有一個字典,我想 有一個存儲所有回調(和一個唯一的ID)的字典。

基本上是這樣的:(這顯然不喜歡的工作)

Dictionary<GUID,Action<T>> AllCallbacks;

這是可能的,而不必在「用戶側」投什麼?

+0

響應對象是否有任何共同點?你能創建一個對所有人都通用的界面嗎? –

+0

不幸沒有。根據請求,或多或少只有不同的保存數據 – zlZimon

+0

您可以舉兩個不同請求的示例操作需要存儲的對象? – mrahhal

回答

1

看看Dictionary of Action<T> Delegates。 應該給你一些可用選項的指導。我認爲沒有一個簡單而優雅的解決方案。 你可以使用Dictionary<GUID,Action<dynamic>> AllCallbacks;,但你需要輸入check和cast。

+0

感謝您的鏈接,唯一的區別是,我可以有一個類型的多個代表。這將使我的解決方案更復雜一點 – zlZimon

相關問題