Dependency injection DI-使用参数解析实例(使用DryIoc的Prism)
我一直在网上搜索如何使用在运行时使用参数的Prism DryIOC解析实例,但幸运的是 例如,我有一个类:Dependency injection DI-使用参数解析实例(使用DryIoc的Prism),dependency-injection,prism,dryioc,Dependency Injection,Prism,Dryioc,我一直在网上搜索如何使用在运行时使用参数的Prism DryIOC解析实例,但幸运的是 例如,我有一个类: internal sealed class ItemInfoHelper : IItemInfoHelper { //ctor public ItemInfoHelper(Item item) {...} public string GetSomething() {...} } 在注册服务中,我需要注册它 protected override void Reg
internal sealed class ItemInfoHelper : IItemInfoHelper
{
//ctor
public ItemInfoHelper(Item item) {...}
public string GetSomething() {...}
}
在注册服务中,我需要注册它
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<IItemInfoHelper, ItemInfoHelper>();
}
受保护的覆盖无效注册表类型(IContainerRegistry containerRegistry)
{
containerRegistry.Register();
}
如果我这样做,当我在某个地方解决它时,比如:
var helperInstance = container.Resolve<IItemInfoHelper>();
var helperInstance=container.Resolve();
显然,它将使用空项(使用默认项构造函数)解决。我看到了很多使用编译时已知的一些参数注册实例的示例。但情况是,我希望使用在不同位置(即,仅在运行时已知)的不同项来解析动态初始化的实例
如果我使用Prism+DryIoc,有没有办法使用这种行为来注册/解决它?
提前感谢。最简单的类型安全方法是解析项的功能:
var getHelperInstance=container.Resolve();
var helperInstance=getHelperInstance(myItem);
出于好奇问一下,如果ItemInfoHelper
需要的参数(依赖项)比项
更多,这是否有效?容器会自动填充吗?@dadhi,谢谢!工作起来很有魅力。您已经创建了一个很棒的产品,DryIoc非常棒:)@Haukinger,是的,如果有多个参数,只需扩展Func即可获得更多参数。很好地工作,只是测试了一下。@Haukinger,是的,其余的参数都是从注册中注入的。更多关于docs@dadhi的内容,只是好奇——如果我们像那样解析helperInstance,是否有某种机制限制我们使用用空项初始化的实例?当然,我们可以在运行时(或在测试中)检查Item是否为null,但在注册IItemInfoHelper时,有没有一种方法可以说Item参数是必需的。正如我现在看到的,没有这样的机制,但也许我错了,你读过[这个建议](blogs.cuttingedge.it/steven/p/runtime data/)了吗?