Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection DI-使用参数解析实例(使用DryIoc的Prism)_Dependency Injection_Prism_Dryioc - Fatal编程技术网

Dependency injection DI-使用参数解析实例(使用DryIoc的Prism)

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

我一直在网上搜索如何使用在运行时使用参数的Prism DryIOC解析实例,但幸运的是

例如,我有一个类:

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/)了吗?