根据我的理解,当目标接口不实现IDisposable时,只需要工厂隔离模式。带IoC的工厂隔离模式
因此,对于低于这个代码是不正确的使用,因为它的IDbConnection实现IDisposable。它是否正确?
假设IDbConnection没有实现IDisposable,那么该用法是正确的。一旦Lambda表达式完成,IDbConnection将被丢弃。正确?
public class IsolationConnectionFactory : IConnectionIsolationFactory { public void With(Action<IDbConnection> do){ using (var connecion = CreateConnection()){ do(connection); } } } // IConnectionIsolationFactory injected by IoC in this class public IEnumerable<TaskDto> GetAllTasks(){ // Usage connectionFactory.With(connection => { connection.Open(); // get data/while read etc }) }
我刚刚在“适应代码通过C#”中遇到了这一节,并且有同样的问题。我没有得到的是,由于工厂返回的接口不会扩展'IDisposable','using'块不能识别'IDisposable',因为它在类中。我为自己创建了一个例子,它不能编译。 – Robotron