实际上,尽管我写了博客(请参阅Luke的答案),但我认为这比我的IDisposable包装更好。典型代码:
Service<IOrderService>.Use(orderService=>{ orderService.PlaceOrder(request);});(按评论编辑)
由于
Usereturn void,处理返回值的最简单方法是通过捕获的变量:
int newOrderId = 0; // need a value for definite assignmentService<IOrderService>.Use(orderService=> { newOrderId = orderService.PlaceOrder(request); });Console.WriteLine(newOrderId); // should be updated


