Реестр эквивалент в Unity - PullRequest
6 голосов
/ 19 марта 2010

Есть ли какой-либо эквивалент класса Registry из StructureMap в Unity?

Мне нравится думать о слое / компоненте / библиотеке, чтобы настроить его самостоятельно - заполняя таким образом контейнер. Поэтому «родительскому» слою просто нужно будет знать о классе Registration.

Ответы [ 2 ]

6 голосов
/ 19 марта 2010

Нет, нет. В нашем текущем проекте мы вручную имитировали концепцию Реестра, хотя наша реализация не так мощна, как Реестр StructureMap.

Если все, что вам нужно, это модульная конфигурация контейнера, то вы можете создать интерфейс маркера (может быть, IRegistry), а затем просканировать свое приложение на наличие классов IRegistry. С Unity вы можете разрешать классы, которые еще не были зарегистрированы в Unity, поэтому вы можете просто разрешить каждую реализацию IRegistry, как вы ее найдете. Классы реестра могут принимать контейнер в качестве параметра конструктора, а затем каждый класс может настраивать контейнер в соответствии с требованиями для этого слоя / компонента / библиотеки.

public interface IRegistry 
{ 
    void Configure();
}

public class ServicesRegistry : IRegistry
{
    public ServicesRegistry(IUnityContainer container)
    {
        _container = container;
    }

    public sub Configure()
    {
        // Configure container for layer
    }
}

Теперь при запуске вашего приложения где-то у вас может быть загрузчик приложений, который либо знает обо всех ваших реестрах, либо знает, как их сканировать.

0 голосов
/ 24 апреля 2012

Вы можете попробовать UnityConfiguration, который является API-интерфейсом конфигурации на основе соглашения для контейнера IoC Unity, находящимся под сильным влиянием StructureMap

https://github.com/thedersen/UnityConfiguration

...