2013-06-05 12 views
6

誰かが私が疑問符を置くコードの行が何をしているのかを普通の英語で説明できますか?または、光を当てる記事を教えてください。このコードは、autofacコンテナに依存関係を登録するためのものです。AutofacのInstancePerLifetimeScopeとは何ですか?

var builder = new Autofac.ContainerBuilder(); 


builder.Register<NHibernateInstance>(c => 
    new NHibernateInstance(ConnString, false)) 
     .InstancePerDependency();//????? 

builder.Register(c => c.Resolve<NHibernateInstance>() 
    .GetFactory().OpenSession()) 
    .As<ISession>() 
    .InstancePerLifetimeScope(); //-----????? 
+5

Googleで最初のヒット:_ [InstanceScope - autofac - インスタンスのスコープによって、同じサービスのリクエスト間でインスタンスが共有される方法が決まります。](http://code.google.com/p/autofac/wiki/InstanceScope)_ –

+1

それは「方法」と呼ばれています。それが何であるかを見たい場合は、右クリックして "Go To Definition"を選択してください。 –

答えて

3

これは依存性注入コンテナです。 Autofac.ContainerBuilderは、あなたが言うかもしれない新しいコンテナまたはレジストラを取得します。

builder.Register<NHibernateInstance>は、回復フェーズ(すなわち、コンテナからインスタンスを得る)中にNHibernateInstanceを構築するとき(すなわち、インスタンスをコンテナから取得するとき)、これがどのように構築されるべきかを述べている。

最後の行はNHibernateInstanceを解決するときOpenSessionメソッドは、オブジェクトの寿命ごとに一度呼び出されるべきことを示しています。

関連する問題