将ninject membershipreboot转换为Autofac

时间:2015-08-18 11:06:30

标签: c# ninject autofac

我正在使用会员重启提供商,并找到了代码示例,但使用的是Ninject而不是Autofac。

有人可以帮助我将Ninject内容转换为Autofac:

["abc@gmail.com", "xyz@gmail.com"]

我只知道如何修改其中一个

kernel.Bind<MembershipRebootConfiguration<CustomUserAccount>>().ToConstant(config);

kernel.Bind<IUserAccountRepository<CustomUserAccount>>().To<CustomRepository>()
    .InRequestScope();
kernel.Bind<CustomDatabase>().ToSelf().InRequestScope();
kernel.Bind<IUserAccountQuery>().To<CustomRepository>().InRequestScope();
kernel.Bind<AuthenticationService<CustomUserAccount>>()
    .To<SamAuthenticationService<CustomUserAccount>>();

一旦我开始工作,我会将它提交给在MRB工作的人,以便帮助其他人。

1 个答案:

答案 0 :(得分:0)

根据Autofac文件,我会这样翻译:

var builder = new ContainerBuilder();

builder.RegisterInstance(config)
    .As<MembershipRebootConfiguration<CustomUserAccount>>();
builder.RegisterType<CustomRepository>()
    .As<IUserAccountRepository<CustomUserAccount>>()
    .InstancePerRequest();
builder.RegisterType<CustomDatabase>()
    .AsSelf()
    .InstancePerRequest();
builder.RegisterType<CustomRepository>()
    .As<IUserAccountQuery>()
    .InstancePerRequest();
builder.RegisterType<SamAuthenticationService<CustomUserAccount>>()
    .As<AuthenticationService<CustomUserAccount>>();

请注意,我使用了InstancePerRequest(),这可能要求您为正在使用的ASP.NET版本添加相应的NuGet包(使用InRequestScope()时Ninject也是如此)。