Уважаемые гуру по IoC и по Unity Application Block,
кто как определяет константы именования интерфейсов?
Пример.
public interface Interface1 {}
public interface Interface2 {}
public interface IMyType1 {}
public interface IMyType2 {}
public class MyType1 : Interface1, Interface2, IMyType1
{
public const string UnitName = "MyType1";
...
}
public class MyType2 : Interface1, Interface2, IMyType2
{
public const string UnitName = "MyType2";
...
}
// register interfaces:
unityContainer.RegisterType<Interface1, MyType1>(MyType1.UnitName);
unityContainer.RegisterType<Interface2, MyType1>(MyType1.UnitName);
unityContainer.RegisterType<Interface1, MyType2>(MyYype2.UnitName);
unityContainer.RegisterType<Interface2, MyType2>(MyYype2.UnitName);
// resolving:
var interfaces1 = unityContainer.ResolveAll<Interface1>(); // ok
var interfaces2 = unityContainer.ResolveAll<Interface2>(); // ok
public class SomeWorkForType1
{
SomeWorkForType1(IMyType1 myType) { }
[Dependency(MyType1.UnitName)] // should known about MyType1
public Interface1 Interface1 { get; set; }
[Dependency(MyType1.UnitName)]
public Interface2 Interface2 { get; set; }
}
В результате нужно знать в точке использование конкретного экземпляра интерфейса
MyType1.UnitName, что есть нехорошо для подмены класса(ов) MyType1 & MyType2
для тестирования и иной реализации этих классов.
Куда и как убираете константы типа этих MyType.UnitName ?
Спасибо.