I have an interface like the below one which I inject into unity container.
public interface IMyInstanceFactory
{
IEnumerable<IMyInstance> GetAll();
}
All IMyInstance
are known before runtime i.e they can be setup within the bootstrapper and can be retrieved from unity. My concrete implementation for IMyInstanceFactory
is as below:
public class MyInstanceFactory:IMyInstanceFactory
{
IUnityContainer _container;
public MyInstanceFactory(IUnityContainer container)
{
_container = container;
}
public IEnumerable<IMyInstance> GetAll()
{
return _container.ResolveAll<IMyInstance>();
}
}
..and in my bootstrapper I do something like this:
container.RegisterType<IMyInstance,MyInstance1>;
container.RegisterType<IMyInstance,MyInstance2>;
container.RegisterType<IMyInstance,MyInstance3>;
container.RegisterType<IMyInstanceFactory,MyInstanceFactory>;
This resolves everything beautifully. However, I do not want to take a dependency on the the container as such or implement IMyInstanceFactory
just for this, is there a way I can set this up without implementing IMyInstanceFactory
? Does Unity provide a facility for this?
Something of this sort..
container.RegisterType<IMyInstanceFactory,factory=>factory.GetAll()>().IsResolvedBy(unity.ResolveAll<IMyInstance>);
I know castle can do this, can Unity do something similar?