首先,我正在做的事情的上下文。我正在運行一個處理HttpRequests的HttpServer。將屬性添加到對象(或至少類似的結果)
HttpServer.bind(ADDRESS, PORT).then((HttpServer server) {
listenSubscription = server.listen(onRequest);
});
void onRequest(HttpRequest request) {
//handle request here
}
我想一些記錄添加到這一切,因爲這一切的異步性,希望將一些識別標識添加到請求(這樣我就可以匹配與請求收據答案,例如)。 onRequest()
裏面的代碼調用了一堆其他函數來處理不同的事情(處理GET和POST請求等),所以只需在頂部生成一個id是一個麻煩的解決方案,因爲我必須通過所有這些其他函數調用。不過,我已經在傳遞HttpRequest
這個對象了,所以我認爲在它上面拋出一個id
字段會很好,就像在JavaScript中一樣,除了Dart不能這樣工作。
想法然後去繼承HttpRequest
類的子類,但將HttpRequest
對象轉換爲onRequest()
方法似乎比我需要的更麻煩和更多的開銷。
所以我問,有沒有任何慣用的飛鏢方式附加一些數據到現有的對象?如果沒有一些慣用的東西,那麼你可以想到的最簡單的方法(無論是在代碼和運行時複雜度方面)是什麼?
您可以使用對象作爲附加數據的鍵和值來創建映射。不漂亮,但很簡單。 – JAre 2014-09-11 02:42:33
地圖是我曾經考慮過的,但需要手動清理垃圾,這讓我想找到更好的東西。看起來'Expando'(看到接受的答案)或多或少是一樣的東西,但是自動清理並且包裝在一個漂亮的包中。 – 2014-09-11 06:25:01