Dependency injection Caliburn.Micro和Simple Injector-InjectProperties不推荐使用-如何构建()?

Dependency injection Caliburn.Micro和Simple Injector-InjectProperties不推荐使用-如何构建()?,dependency-injection,caliburn.micro,simple-injector,Dependency Injection,Caliburn.micro,Simple Injector,InjectProperties的简单喷油器功能被标记为已弃用,将在将来的版本中删除。我将如何在Caliburn.Micro的buildingoverride中使用它?该框架在内部通过IoC.build多次使用此功能 InjectProperties用[过时]属性标记,编译器消息指向提供更详细信息的URL。引用的页面解释了此方法被弃用的原因以及如何为此更改代码或配置 该页面还链接到。本页介绍如何配置容器以启用属性注入。例如: 类PropertySelectionBehavior:IPropert

InjectProperties
的简单喷油器功能被标记为已弃用,将在将来的版本中删除。我将如何在Caliburn.Micro的
building
override中使用它?该框架在内部通过
IoC.build
多次使用此功能

InjectProperties用
[过时]
属性标记,编译器消息指向提供更详细信息的URL。引用的页面解释了此方法被弃用的原因以及如何为此更改代码或配置

该页面还链接到。本页介绍如何配置容器以启用属性注入。例如:

类PropertySelectionBehavior:IPropertySelectionBehavior
其中:属性
{
公共bool SelectProperty(类型类型、属性信息属性){
返回prop.GetCustomAttributes(typeof(tatAttribute)).Any();
}
}
//用法:
var container=新容器();
container.Options.PropertySelectionBehavior=
新属性SelectionBehavior();
这允许容器注入显式标记为
[MyInject]
属性的属性

如果可能,请始终尝试让容器为您创建类型,而不是使用带有默认构造函数的类型,然后再注入属性。然而,我对Caliburn Micro并不熟悉,我不确定这是否可行

如果需要类似于构建的行为,可以从容器中检索注册,并请求它为您初始化现有实例。这将如下所示:

public void building(对象实例)
{
var registration=this.container.GetRegistration(instance.GetType(),true);
注册.注册.初始化instance(实例);
}
这允许容器初始化实例并通过发送实例,从而根据给定的注册和配置规则(如上面给出的显式属性注入示例)启用属性注入和其他初始化


如果需要构建的类型具有默认构造函数,那么这种方法非常有效。如果不是这种情况,您必须通过调用
lifiety.Transient.CreateRegistration
来创建(并缓存)一个新的
Registration
实例,并在该实例上调用
InitializeInstance
,就像MVC集成包的
SimpleInjectorFilterTributeFilterProvider
一样(您可以查看其源代码).

感谢Steven的快速响应。我实际上阅读了该链接,但不知道如何运行通过容器管道在容器外部创建的实例。不过,我有点担心,正在使用的类型没有在容器中注册,只有它们的属性。这都在框架内,我不知道确定内部工作…@MarkusHütter:我对Caliburn和WPF没有经验,也不确定这里有什么建议。你能更新你的问题吗?给我一个链接到一些在线资源,解释需要“建立”的类型以及它们是如何使用的?嗯,我只是在看resharper展示的用法。寻找我找到的文档:“Building”可选择性地用于向框架执行的IResult实例提供属性依赖关系通过查看代码,继承IResult的框架提供的类甚至没有可注入属性。因此,我想我可以注册自己的IResult类,并通过
InitializeInstance(…)使用您的建议
谢谢你的帮助。我认为你提供的所有这些彻底的答案都没有给你足够的分数。所有这些问题似乎都很具体,除了你之外没有其他人能回答(关于简单注射器)!