C# WinForm应用程序中的NHibernate和AUTOFAC

C# WinForm应用程序中的NHibernate和AUTOFAC,c#,winforms,nhibernate,autofac,C#,Winforms,Nhibernate,Autofac,我正在寻找一个很好的教程,在WinForm应用程序中使用NHibernate配置AUTOFAC,在创建表单时注入ISession,并在表单关闭时处理ISession 我发现很多MVC和ASP.NET示例,但没有一个使用WinForm 你能给我指一下正确的方向吗 我会这样做 public class FormFactory { readonly ILifetimeScope scope; public FormFactory(ILifetimeScope scope) {

我正在寻找一个很好的教程,在WinForm应用程序中使用NHibernate配置AUTOFAC,在创建表单时注入ISession,并在表单关闭时处理ISession

我发现很多MVC和ASP.NET示例,但没有一个使用WinForm


你能给我指一下正确的方向吗

我会这样做

public class FormFactory
{
    readonly ILifetimeScope scope;

    public FormFactory(ILifetimeScope scope)
    {
        this.scope = scope;
    }

    public TForm CreateForm<TForm>() where TForm : Form
    {
        var formScope = scope.BeginLifetimeScope("FormScope");
        var form = formScope.Resolve<TForm>();
        form.Closed += (s, e) => formScope.Dispose();
        return form;
    }
}

您的代码必须显式地提交事务(可能是在用户单击Save或其他操作时),如果用户单击Cancel,则可能应该回滚事务

我知道为时已晚,danyolgiax已经找到了解决方案。 昨天我想知道如何在Winforms中将Autofac与MVP结合起来。我参与了这件事

它是用波兰语写的,所以请随意使用翻译。提出的想法非常简洁、清晰,当我们的项目迁移到Autofac时,我一定会遵循它。 我认为值得为那些遇到同样问题的人保留它。

看看:
builder.Register(c => SomeSessionFactory.OpenSession())
    .As<ISession>()
    .InstancePerMatchingLifetimeScope("FormScope");