私はWindowsフォームアプリケーションでNHibernate/Windsorを使用する方法を理解しようとしています。ウィンザーでのフォームの登録と使用
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var container = new WindsorContainer();
var containerAdapter = new WindsorContainerAdapter(container);
var MarketingDatabaseSessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.config")).BuildSessionFactory();
NCommon.Configure.Using(containerAdapter)
.ConfigureState<DefaultStateConfiguration>(stateConfig =>
stateConfig.UseCustomSessionStateOf<HttpSessionState>())
.ConfigureUnitOfWork<DefaultUnitOfWorkConfiguration>(x =>
x.AutoCompleteScope())
.ConfigureData<NHConfiguration>(config => config.WithSessionFactory(() => MarketingDatabaseSessionFactory)
.WithDistinctResults());
container.AddComponent("main", typeof(Form1));
container.Register(AllTypes.FromAssemblyNamed("ProductManager.Services").BasedOn(typeof(IService)).WithService.Select((t, baseType) => t.GetInterfaces()));
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
Form1 mainForm = container.Resolve<Form1>();
Application.Run(mainForm);
}
DIはすべて私のサービスのために、私のメインフォームのために働く、素晴らしい作品:私は私のメインの方法でこれを持っています。私の質問は、そこからどのように前進するのだろうか?私は最初のフォームが動作していますが、他のフォームやコントロールにどのように依存関係を注入するのですか? MVCにはすべてのコントローラを登録する方法がありますが、フォームと同様のものを探していますが、フォームを明示的にインスタンス化する必要があるため混乱します。だから、私が各フォームを1つずつ登録しても、私がポイントを逃した自分自身をすべて解決することなく、どのように子供のフォームやコントロールを撃墜するのか分かりません。
ありがとう、私は全部見渡して、これの適切な例を見つけることができませんでした – Nick
私はそれを二番目に!素晴らしい記事。 –