将ninject membershipreboot转换为Autofac

本文关键字:Autofac 转换 membershipreboot ninject | 更新日期: 2023-09-27 18:08:24

我正在使用成员身份重新启动提供程序,并找到了一个代码示例,但使用了Ninject而不是Autofac。

有人能帮我把Ninject的东西转换成Autofac:吗

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>>();

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

var builder = new ContainerBuilder();
builder.RegisterType<CustomRepository>().As<IUserAccountQuery>()
    .InstancePerLifetimeScope();

一旦我有了它,我会把它提交给MRB的工作人员,也许可以帮助其他人。

将ninject membershipreboot转换为Autofac

根据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也是如此(。