Unity Container того же типа, но из разных пространств имен - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно создать контейнер для единства, чтобы добавить зависимости в мой проект asp.net. В этом проекте мне нужно зарегистрировать два типа, которые относятся к разным пространствам имен, но имеют одинаковые имена. Итак, как я могу зарегистрировать оба типа в одном контейнере единиц?

container.RegisterType<IType, Type>()
container.RegisterType<IType, Type>();

Здесь ITypes и Types относятся к другому пространству имен. Но есть такие же имена. Так как я могу зарегистрировать оба в одном контейнере? Я использую Unity Container версии 5.2.0.0

1 Ответ

0 голосов
/ 06 ноября 2019

Я не использовал Unity, но при условии, что он такой же, как и любой другой контейнер, все должно быть так просто:

container.RegisterType<NamespaceA.IType, NamespaceA.Type>()
container.RegisterType<NamespaceB.IType, NamespaceB.Type>();

По сути, типы будут регистрироваться внутри, используя их Type метаданные, поэтому контейнер будет видеть их как два совершенно разных типа, как если бы они назывались ITypeA и ITypeB.

Затем, когда вы вводите их, вам просто нужно сделатьубедитесь, что вы ссылаетесь на правильное пространство имен.

Если вам нужны оба из них, явно указывайте оба пространства имен:

public MyService(NamespaceA.IType aType, NamespaceB.IType bType)

Или, если вам нужно только одно, то просто ссылайтесь на пространство имен с помощьюusing (или явно) и введите его как обычно:

using NamespaceA;

public class MyService
{
    public MyService(IType aType)
    {
    }
}
...