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?