how do I register two different interfaces in Unity with the same instance... Currently I am using
_container.RegisterType<EventService, EventService>(new ContainerControlledLifetimeManager());
_container.RegisterInstance<IEventService>(_container.Resolve<EventService>());
_container.RegisterInstance<IEventServiceInformation>(_container.Resolve<EventService>());
which works, but does not look nice..
So, I think you get the idea. EventService implements two interfaces, I want a reference to the same object if I resolve the interfaces.
Chris
[2nd Edit]
Because of breaking changes in the way Unity handles registrations, the updated approach does not work anymore. The [Original answer] is the way to go again. (For more details about the changes in Unity, please refer to the link given in the comments below.)
[Edit]
The solution for doing this via XML configuration can be found here. Based on that answer I would propose a streamlined code-only approach as follows:
_container.RegisterType<IEventService, EventService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IEventServiceInformation, EventService>(new ContainerControlledLifetimeManager());
bool singleton = ReferenceEquals(_container.Resolve<IEventService>(), _container.Resolve<IEventServiceInformation>());
This way, the EventService class itself is not published by the container. As the class should be considered an implementaion detail, this is the preferable approach.
[Original answer]
A little late an answer, but should do the trick:
_container.RegisterType<EventService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IEventService, EventService>();
_container.RegisterType<IEventServiceInformation, EventService>();
bool singleton = ReferenceEquals(_container.Resolve<IEventService>(), _container.Resolve<IEventServiceInformation>());