AppHostBase
уже содержит Container
свойство (которое решает, чтобы EndpointHost.Config.ServiceManager.Container
если они определены), так почему бы не просто использовать Instance.Container
(например, для регистрации зависимостей, плагинов и т.д.) внутри Configure
или в другом месте внутри любого AppHost
реализаций?Почему приложение AppHostBase.Configure ServiceStack принимает параметр Container?
Я отмечаю, что Configure
является публичным, так что его можно было бы технически вызывать из любой точки мира, хотя кажется, что AppHostBase.Init()
- это единственное место в базе данных ServiceStack, которая делает это.
Правильно, но почему бы не сделать 'Configure() {Instance.Container.Register <...> (...); } 'вместо' Configure (контейнер контейнера) {container.Register <...> (...); } '? Кажется, что они имеют тот же конечный результат, хотя я не проследил его полностью - и это будет более простой дизайн. –
API ведет вас к тому, что делать. Доступ к синглтону не означает, что он должен использоваться только в пределах этой области, он делает вид, что вы можете получить доступ и изменить его в любое время - это не так. – mythz
Это имеет смысл; вы разоблачаете синглтон для чтения в других обстоятельствах, но не хотите, чтобы его «Контейнер» изменился. И я вижу, что 'Configure (Container)' определен в 'IFunqlet', поэтому этот метод является общедоступным и не защищенным (поскольку в противном случае кажется, что' AppHostBase.Init() '- единственное, что нужно назвать) , –