Что такое “ForwardedTypes” в контексте регистрации компонента замка Windsor?

Я нашел решение: TensorFlow 2.0 вводит концепцию функций , которые переводят нетерпеливый код в графовый код.

Использование довольно простое. Единственное необходимое изменение заключается в том, что все соответствующие функции (такие как compute_loss и apply_gradients) должны быть помечены @tf.function.

16
задан Peter Mounce 13 October 2008 в 11:31
поделиться

1 ответ

Переданные типы позволяют Вам иметь больше чем один сервис, реализованный единственной реализацией, поскольку конкретный пример говорит, что у нас есть два интерфейса для работы с древовидными какими-то узлами:

public interface INodeAlterationProvider { ... }
public interface IChildNodeListProvider { ... }

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

public class NodeFactory : INodeAlterationProvider, IChildNodeListProvider { ... }

Вы могли зарегистрировать два экземпляра NodeFactory, один для каждого сервиса, который они реализуют:

container.Register(Component.For<INodeAlterationProvider>().ImplementedBy<NodeFactory>());
container.Register(Component.For<IChildNodeListProvider>().ImplementedBy<NodeFactory>());

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

Это, где передано вводит шаг, позволяя Вам передать многочисленные услуги той же реализации, вот пример выполнения этого:

container.Register(Component.For<INodeAlterationProvider>().Forward<IChildNodeListProvider>().ImplementedBy<NodeFactory>());

Примечание: регистрационный код компонента, показанный здесь, только доступен на соединительной линии.

17
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

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