Ответ 1
Я хотел того же, что и ты; основанную на согласии конфигурацию ala Structuremap, и пошел вперед и создал для нее библиотеку. Вы можете загрузить его на NuGet и прочитать некоторую документацию по github страница
Надеюсь, это поможет!
Используя Unity, я хотел бы автоматически зарегистрировать все комбинации интерфейса/класса в сборке на основе следующего соглашения:
INameOfObject > NameOfObject
StructureMap делает это, когда соглашения по умолчанию включены.
Я написал для него следующий метод:
private static IUnityContainer RegisterITypesOf(this IUnityContainer container, string assemblyName)
{
Assembly.Load(assemblyName)
.GetTypes()
.Where(t => t.GetInterfaces().Any(i => i.Name == "I" + t.Name))
.ForEach(t => container.RegisterType(t.GetInterface("I" + t.Name, false), t));
return container;
}
Мой вопрос:
Я хотел того же, что и ты; основанную на согласии конфигурацию ala Structuremap, и пошел вперед и создал для нее библиотеку. Вы можете загрузить его на NuGet и прочитать некоторую документацию по github страница
Надеюсь, это поможет!
Unity 3.5.140.0 имеет встроенные функции для регистрации интерфейсов с похожими именами, такими как класс, который его использует.
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterTypes(
AllClasses.FromLoadedAssemblies(),
WithMappings.FromMatchingInterface,
WithName.Default);
}
Unity не поддерживает соглашения. Но проект TecX на codeplex содержит расширенный механизм настройки для Unity, который основан на конфигурации StructureMap.
Вы можете зарегистрироваться по соглашению...
https://msdn.microsoft.com/en-us/library/dn507479(v=pandp.30).aspx