Search code examples
c#.netdependency-injectionunity-containerenterprise-library

Microsoft Unity- Issue With Resolve


I am looking to do this:

container.Resolve();

When it does this, its going to inject a IDependency into the underlying entity object. However, the dependency stored within the container requires an object of type DependencyValue, which is supplied a value from a DependencyFactory. So long story short, the issue I'm having is that I need to, when Unity creates the instance of class implementing IDependency, that I would be able to take over and insert a custom value not in the container.

Is that possible, or is my best bet to use RegisterInstance on the container and manually instantiate the objects? I prefer using the configuration file to store the mapping, and then add some logic for parameter instantiation. Is that what the ParameterOverrides is meant to do? Or do I need to add an extension for this, or what?

Thanks.


Solution

  • Why don't you use the static factory extension?

    var container = new UnityContainer();
    container.AddNewExtension()
             .Configure()
             .RegisterFactory(container =>
                              DependencyFactory.GetValue());