Register null as instance in Unity container

.net, c#, unity-container

Solution

In the `.RegisterType<IMyRepository, MyRepository>()` call, specify the InjectionConstructor with an OptionalParameter, as in

.RegisterType<IMyRepository, MyRepository>(new InjectionConstructor(
new ResolvedParameter<IDataContext>(), 
new OptionalParameter<ICacheProvider>()));

Problem

I have a repository class with optional dependency: ``` class MyRepository : BaseRepository, IMyRepository { public MyRepository(IDataContext dataContext, ICacheProvider cacheProvider = null) : base(dataContext, cacheProvider) {} // … } ``` The existence of cacheProvider parameter acts as strategy for the repository. I want setup Unity container like this: ``` Container.RegisterType<IDataContext, MyDataContext>(new PerResolveLifetimeManager(), new InjectionConstructor()) .RegisterInstance<ICacheProvider>(null) // ??? .RegisterType<IMyRepository, MyRepository>(); ``` I.e. not pointing out particular InjectionConstructor with one parameter for MyRepository, but use default constructor with null as cacheProvider parameter. Is there any way to do this?

Original source