Расширение Unity Static Factory - PullRequest
7 голосов
/ 04 октября 2010

Кажется, я нигде не могу найти Microsoft.Practices.Unity.StaticFactory.dll.

Есть ли другой способ регистрации статической фабрики?

Ищите что-то вроде этого

container.RegisterFactory (() => FooFactory.CreateFoo ());

Ответы [ 2 ]

14 голосов
/ 05 октября 2010

StaticFactory.dll был свернут в основную сборку как часть Unity 2.0. В целом это было достаточно полезно, так что мы не хотели заставлять людей носить с собой отдельную DLL, чтобы получить ее.

Таким образом, вы все еще можете использовать существующий API, вам просто не нужно добавлять ссылку на сборку. Тем не менее, мы устарели старый API. Расширение можно добавить, но ничего не делает, оно уже включено в контейнер. И теперь вы можете зарегистрировать фабрики в контейнере, сказав:

  container.RegisterType<IFoo, Foo>(new InjectionFactory(c => new Foo());

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

Мы отказались от старого API, потому что его было очень неудобно использовать, и он больше не является расширением.

0 голосов
/ 05 октября 2010

Метод RegisterFactory является частью класса StaticFactoryExtension , который устарел, как вы можете видеть здесь .

Если вы ищетедля заводских расширений эта ветка должна быть полезной.

Надеюсь, это поможет.

Спасибо, Дамиан

...