0
我想弄清楚如何在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中有一種方法來註冊所有的控制器,我正在尋找類似的形式,但我很困惑,因爲你必須明確實例化表單。所以,即使我逐一登記每一個表格,我也不知道如果沒有解決所有錯過了這一點的我自己,我會如何去掉一個孩子的形式或控制。
謝謝先生,我看了一遍,找不到這個 – Nick 2012-04-02 15:39:38
的第二個例子!偉大的文章。 – 2013-01-31 15:18:01