Конфигурация Unity IOC - PullRequest
       18

Конфигурация Unity IOC

0 голосов
/ 16 декабря 2008

У меня есть класс

public class Broker
{
    public Broker(string[] hosts, string endPoint, string port, Type remoteType)
    {
    }
}

То, что я хочу настроить, используя конфигурацию Unity XML, я могу настроить, используя код на C #, как указано ниже, где «контейнер» - это мой контейнер Unity

            container.Configure<InjectedMembers>()
                .ConfigureInjectionFor<Broker>("myBroker",
                                                           new InjectionConstructor(hosts, endPoint, port, new InjectionParameter(typeof(IMyBrokeredObject))));

и он с радостью разрешит обычные вызовы единства

container.Resolve ( "myBroker");

Но в настоящее время мой xml не может разрешить последний параметр IMyBrokeredObject, я получаю исключение разрешения, так как Unity пытается разрешить тип, введенный простым введением типа, как это происходит в коде выше.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 29 декабря 2008

Вы определили тип в файле конфигурации:

<unity>
<typeAliases>
  <typeAlias alias="IMyBrokeredObject" type="MyAssembly.IMyBrokeredObject, MyAssembly" />
</typeAliases>
<containers>
      <container>
        <types>
          <!-- Views -->
          <type type="IMyBrokeredObject" mapTo="MyAssembly.MyBrokeredObjectImplementation, MyAssembly" />
0 голосов
/ 02 января 2009

Но моя проблема в том, что для IMyBrokeredObject нет реализации, на самом деле происходит то, что посредник предоставляет удаленные объекты через интерфейс, а фактическая реализация где-то еще.

В коде я могу получить контейнер для предоставления брокеру, задав «InjectionParameter», я не могу выяснить, как это сделать в конфигурации xml.

это сложно, потому что я не хочу, чтобы контейнер давал экземпляр интерфейса, но фактически передает интерфейс как есть, «InjectionParameter» - это хранилище для значения, сохраненное значение передается, когда объект создается контейнер, как есть. То, что я ищу, - это необходимая конфигурация xml для создания InjectionParameter и присвоения ему значения, если это вообще возможно?

...