Microsoft Unity, parameters in constructor
I am using Unity with MVC and NHibernate. Unfortunately, our UnitOfWork resides in a different .dll and it doesn't have a default empty .ctor. This is what I do to register NHibernate:
var connectionString = ConfigurationManager.ConnectionStrings
["jobManagerConnection"].ConnectionString;
var assemblyMap = ConfigurationManager.AppSettings["assemblyMap"];
container.RegisterType<IUnitOfWork, UnitOfWork>(
new ContainerControlledLifetimeManager());
In my WebController I have this:
/// <summary>Gets or sets UnitOfWork.</summary>
[Dependency]
public IUnitOfWork UnitOfWork { get; set; }
The problem is that the constructor of UnitOfWork expects 2 mandatory strings. How I can setup the RegisterType for this Interface in order to pass the two开发者_如何学Python parameters retreived from the web.config? Is it possible?
Something like this should do it:
var connectionString = ConfigurationManager.ConnectionStrings
["jobManagerConnection"].ConnectionString;
var assemblyMap = ConfigurationManager.AppSettings["assemblyMap"];
container.RegisterType<IUnitOfWork, UnitOfWork>(
new InjectionConstructor(connectionString, assemblyMap),
new ContainerControlledLifetimeManager());
Easier than I though:
var connectionString = ConfigurationManager.ConnectionStrings["jobManagerConnection"].ConnectionString;
var assemblyMap = ConfigurationManager.AppSettings["assemblyMap"];
container
.RegisterType<IUnitOfWork, UnitOfWork>(new ContainerControlledLifetimeManager())
.Configure<InjectedMembers>()
.ConfigureInjectionFor<UnitOfWork>(new InjectionConstructor(connectionString, assemblyMap));
精彩评论