Регистр единицы два интерфейса как один одиночный элемент

Только Oracle и SQLServer Microsoft являются закрытым исходным кодом, и когда что-то идет не так, как надо, и у Вас есть проблема, ответ является просто телефонным вызовом далеко (и наличные деньги если курс). MySQL Anyways и PostGre имеют несколько консалтинговых услуг предприятия, но в конце эти консультанты не действительно resposible для продукта, потому что продукт принадлежит всем. Который является большим, потому что можно войти и исправить код, если Вы хороши с C и относительно низкоуровневым программированием, но если Вы не находите, что решение могло бы стать погоней за несбыточным.

Теперь с тех пор не все достаточно квалифицированы, и те предприятия с деньгами предпочитают безопасность (в деловом чутье) баз данных с закрытым исходным кодом, причина, почему эти решения не обанкротились помимо того, что их реализации серьезны и стоят денег, если у Вас есть он.

хорошо теперь наконец наиболее важное различие между SQLServer и Oracle, и тем различием является ОС, большинство людей, использующих Windows, будет придерживаться с, Вы предположили это, SQLServer, но если Вы работаете на разновидностях Unix, Oracle является Вашим решением с закрытым исходным кодом. Так или иначе я использую Oracle на Солярисе, но если бы наша цель была Windows I, то вероятно, использовал бы SQLServer, потому что обоими продуктами является горное тело, но я полагаю, что Microsoft имеет некоторые специальные приемы под капотом для получения лучшей производительности на окнах.

42
задан Christian Ruppert 9 September 2009 в 21:40
поделиться

2 ответа

Править

После некоторых отзывов в комментариях я решил, что ответ Свена - намного лучший ответ. Спасибо Крису Таваресу за указание на технические достоинства.


Это практически единственный способ сделать это.

Вы можете немного изменить его (я ненавижу RegisterType с одинаковым типом для каждого универсального параметра):

EventService es = _container.Resolve<EventService>();
_container.RegisterInstance<IEventService>(es);
_container.RegisterInstance<IEventServiceInformation>(es);

Если один или несколько ваших дочерних IoC собираются запросить конкретный тип EventService (надеюсь, нет ) нужно добавить еще один RegisterInstance типа RegisterInstance . Надеюсь, вам это не нужно, и все зависимые объекты запрашивают IEventService , а не EventService .

Надеюсь, это поможет, Андерсон

15
ответ дан 26 November 2019 в 23:43
поделиться

[2nd Edit]

Из-за критических изменений в способе обработки регистраций Unity обновленный подход больше не работает. [Исходный ответ] - это снова путь. (Для получения дополнительных сведений об изменениях в Unity перейдите по ссылке в комментариях ниже.)

[Edit]

Решение для выполнение этого с помощью конфигурации XML можно найти здесь . Основываясь на этом ответе, я бы предложил упрощенный подход, основанный только на коде, а именно:

_container.RegisterType<IEventService, EventService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IEventServiceInformation, EventService>(new ContainerControlledLifetimeManager());
bool singleton = ReferenceEquals(_container.Resolve<IEventService>(), _container.Resolve<IEventServiceInformation>());

Таким образом, сам класс EventService не публикуется контейнером. Поскольку класс следует рассматривать как деталь реализации, это предпочтительный подход.

[Исходный ответ]

Ответ немного запоздал, но должен помочь:

_container.RegisterType<EventService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IEventService, EventService>();
_container.RegisterType<IEventServiceInformation, EventService>();

bool singleton = ReferenceEquals(_container.Resolve<IEventService>(), _container.Resolve<IEventServiceInformation>());
57
ответ дан 26 November 2019 в 23:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: