根據我的理解,當目標接口不實現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