Нет понятия Current IUnityContainer , поскольку вы можете иметь их несколько, хотя, по моему опыту, это очень редкая вещь, если вы не учитываете дочерние контейнеры.Однако есть несколько способов удержать контейнер.Вы можете сделать то, что предложено в этом ответе , сделав это на более высоком уровне, но я бы рекомендовал против этого.Я привык делать следующее:
В неосновных проектах я создаю статический класс, например:
static class UnityRegistrator
{
public static void Register(IUnityContainer container)
{
// Whatever Registrations for types in this assembly.
container.RegisterType<INamedClass, ClassLibrary2>(
new InjectionConstructor(
new ResolvedParameter<string>("Foo")));
}
}
И в основном проекте, например, вваш program.cs
:
class Program
{
static void Main(string[] args)
{
var container = new UnityContainer();
MyAssembly.UnityRegistrator.Register(container);
var namedClass = container.Resolve<INamedClass>();
namedClass.Whatever();
}
static void Register(IUnityContainer container)
{
// Whatever Registrations for types in this assembly.
container.RegisterType<string>("Foo", "Bar");
}
}