Unity constructor parameters
14,869
You can use a ParameterOverride like:
var p = container.Resolve<IPerson>(new ParameterOverride("EntityName", entityName));
This tells unity to supply the entityName
instance to the constructor with the parameter named "EntityName".
You can find some additional info here: http://msdn.microsoft.com/en-us/library/ff660920(v=pandp.20).aspx
Author by
Learner
Updated on June 28, 2022Comments
-
Learner about 2 years
class Entity:IEntityName { #region IEntityName Members public string FirstName { get; set; } public string LastName { get; set; } #endregion } public class Person:IPerson { public IEntityName EntityName; public Person() { } public Person(IEntityName EntityName) { this.EntityName = EntityName; } public string ReverseName() { return string.Format("Your reverse name is {0} {1}",EntityName.LastName, EntityName.FirstName); } public override string ToString() { return string.Format("Name is {0} {1}", EntityName.FirstName, EntityName.LastName); } } // Main Method private static string DisplayReverseName(string fName,string lName) { IUnityContainer container = new UnityContainer(); container.RegisterType<IPerson, Person>().RegisterType<IEntityName,Entity>(); IEntityName entityName = container.Resolve<IEntityName>(); entityName.FirstName = fName; entityName.LastName = lName; var p = container.Resolve<IPerson>(); return p.ReverseName(); // firstName and lastName are still null }
How can I inject the firstName and lastName into Person constructor ?