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

Share:
14,869
Learner
Author by

Learner

Updated on June 28, 2022

Comments

  • Learner
    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 ?