3

如何从 Autofac 修改以下内容以使用 Common Service Locator(其中 _context 的类型为 IComponentContext):

var query = _context.Resolve<IContentQuery>(TypedParameter.From<IContentManager>(this));

上面的代码取自 Orchard,我正在尝试删除对 Autofac 的依赖。通常我会尝试类似的东西:

var query = ServiceLocator.Current.GetInstance<IContentQuery>();

但是,这返回 null 并且我看不到如何处理 TypedParameter 的东西,因为我不明白它在做什么。

如果有人可以提供帮助,我将不胜感激。谢谢

4

1 回答 1

3

ATypedParameter为正在解析的组件的构造函数提供了一个附加值。在这种情况下,底层证券ContextQuery将接受一个类型的参数和传递IContentManager的值。this

Common Service Locator 不支持参数化,因此您可能需要使用底层 IoC 容器的特定功能。

希望这可以帮助。缺口

于 2011-06-15T11:30:27.940 回答