《 .NET并发编程实战》实战习题集 - 如何重用一次性资源
2019-09-22 10:36 叶伟民 阅读(167) 评论(0) 编辑 收藏 举报如何重用以下一次性资源代码呢?
1 string text; 2 3 using (var stream = new StreamReader(path)) 4 5 { 6 7 text = stream.ReadToEnd(); 8 9 }
这时以传统的OOP风格来重构代码并不是一件容易的事。是可以使用模板方法模式来解决这个问题,但是该解决方案还会带来更多的复杂性,因为它需要新的基类和每个派生类的实现。更好、更优雅的解决方案是函数式编程, 即使用lambda表达式(匿名委托)。以下是实现静态辅助方法及其用法的代码:
R Using<T,R>(this T item, Func<T, R> func) where T : IDisposable { using (item) return func(item); string text = new StreamReader(path).Using(stream => stream.ReadToEnd());
以上代码实现了一种灵活且可重用的模式,以用于清理一次性资源。这里唯一的约束就是泛型类型T必须是实现IDisposable的类型。
本文来自博客园,作者:叶伟民,转载请注明原文链接:https://www.cnblogs.com/adalovelacer/p/book-concurrency-in-dot-net-chinese-version-practice-4.html