首先,我正在做的事情的上下文。我正在运行一个处理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