UnityContainer ResolveAll() naming interfaces
От: Hex66 Россия  
Дата: 13.05.13 12:53
Оценка:
Уважаемые гуру по 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 ?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.