Я использую Unity Microsoft для инъекции зависимостей, и я хочу сделать что-то вроде этого:Могу ли я передать параметры конструктора методу Unity's Resolve()?
IDataContext context = _unityContainer.Resolve<IDataContext>();
var repositoryA = _unityContainer.Resolve<IRepositoryA>(context); //Same instance of context
var repositoryB = _unityContainer.Resolve<IRepositoryB>(context); //Same instance of context
IDataContext context2 = _unityContainer.Resolve<IDataContext>(); //New instance
var repositoryA2 = _unityContainer.Resolve<IRepositoryA>(context2);
RepositoryA
и RepositoryB
оба имеют конструктор, который принимает IDataContext
параметр, и я хочу Unity, чтобы инициализировать репозиторий с контекстом что я его передаю. Также обратите внимание, что IDataContext
не зарегистрирован в Unity (я не хочу 3 экземпляра IDataContext
).
См. Также http://stackoverflow.com/questions/2813322/unity-2-0-how-to-use -resolve-with-resolveroverride –
ссылка http://unity.codeplex.com/SourceControl/changeset/view/33899 не активна –
«Класс» Microsoft.Practices.Unity.ParameterOverrides «не имеет параметров типа». Я использую Unity 3.5; этот код действителен только для более старой версии Unity? –