Gram z dostawcą restartowania członkostwa i znalazłem przykład kodu, ale używając Ninject zamiast Autofac.
Czy ktoś mógłby mi pomóc przekonwertować rzeczy Ninject na 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>>();
Wiem tylko, jak zmodyfikować jedną z nich
var builder = new ContainerBuilder();
builder.RegisterType<CustomRepository>().As<IUserAccountQuery>()
.InstancePerLifetimeScope();
Kiedy już to zadziała, przekażę go facetom pracującym nad MRB, aby być może pomóc komuś innemu.
Odpowiedzi:
0 dla odpowiedzi № 1Zgodnie z dokumentem Autofac tłumaczę to tak:
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>>();
zauważ, że użyłem InstancePerRequest()
co prawdopodobnie wymaga dodania odpowiedniego pakietu NuGet dla używanej edycji ASP.NET (podobnie jak Ninject podczas używania InRequestScope()
).