C# 创建查看属性/参数属性的ISubDependencyResolver
我正在使用Castle Windsor作为更专业框架的一部分。弹出的需求之一是能够选择在基于服务上指定的属性解析服务时使用的实现 例如,假设:C# 创建查看属性/参数属性的ISubDependencyResolver,c#,castle-windsor,C#,Castle Windsor,我正在使用Castle Windsor作为更专业框架的一部分。弹出的需求之一是能够选择在基于服务上指定的属性解析服务时使用的实现 例如,假设: public class MyService { public MyService([Selector("Bar")]SomeDependency foo){......} } 然后我想在ISubDependencyResolver中,获取SelectorAttribute,获取其值,并相应地进行解析 我们已经这样做了,但是使用类型本身的属性(比
public class MyService
{
public MyService([Selector("Bar")]SomeDependency foo){......}
}
然后我想在ISubDependencyResolver中,获取SelectorAttribute,获取其值,并相应地进行解析
我们已经这样做了,但是使用类型本身的属性(比如说SomeDependency定义中的属性)。这很容易,因为你有一个对类型的引用。但是,我在查找如何获取当前正在解析的参数/属性的引用时遇到了问题,这将使我能够获取该属性
有人愿意分享一些见解吗
谢谢 IMO这实际上是一个内联定义的服务覆盖,所以我会这样对待它。与其尝试在
isubdependencysolver
中实现这一点,我将使用组件模型参与者(IContributeComponentModelConstruction
)
问题是,要做到这一点,除了用您自己的替换默认的构造函数DependenciesModelInstitt
之外,我看不到任何其他方法(这非常类似,但它也会读取此SelectorAttribute
,当找到它时,它会创建一个DependencyModel
,带有DependencyType.ServiceOverride
要替换
ConstructorDependenciesModelInstitt
请使用container.Kernel.ComponentModelBuilder
在IMO中,这实际上是一个内联定义的服务覆盖,因此我会将其视为一个服务覆盖。我不会尝试在ISubDependencyResolver
中实现它(IContributeComponentModelConstruction
)
问题是,要做到这一点,除了用您自己的替换默认的构造函数DependenciesModelInstitt
之外,我看不到任何其他方法(这非常类似,但它也会读取此SelectorAttribute
,当找到它时,它会创建一个DependencyModel
,带有DependencyType.ServiceOverride
要替换
ConstructorDependenciesModelInstitt
请使用container.Kernel.ComponentModelBuilder
是否“Bar”是温莎组件id?否,如果是这样的话,那就太容易了:)是否“Bar”是温莎组件id?否,如果是这样的话,那就太容易了:)我不认为你需要更换它…不确定,我想-我不得不这样做check@KrzysztofKoźmic:是的,不替换它是可能的,我会编辑我的答案。@Krzysztof Koźmic:经过再三考虑,我宁愿替换它,而不是在事后编辑附加的依赖模型。这看起来很有潜力。我正在研究这个问题现在来看看如何做,但是如果你有任何参考,那就太好了。有一件事让我有点厌烦,那就是我所寻找的信息实际上可以作为DependencyModelExtended.Info属性的一部分提供给ISubDependencyResolver。这会使实现这一点变得非常简单。不幸的是,它的内部nal,我对使用隐藏成员感觉不太好。我玩弄了IContributeComponentModelConstruction接口,它很容易检查属性,但我不知道如何将覆盖与特定构造函数的特定参数相关联。希望ConstructorDependenciesModelInstitute是关键。谢谢!我不这么认为你需要换掉它…不确定,我想-我不得不check@KrzysztofKoźmic:是的,不替换它是可能的,我会编辑我的答案。@Krzysztof Koźmic:经过再三考虑,我更愿意替换它,而不是在事后编辑附加的DependencyModels。这看起来很有潜力。我现在正在研究这个问题,看看h怎么做,但如果你有任何参考,那就太好了。有一件事让我有点不舒服,那就是我所寻找的信息实际上可以作为DependencyModelExpended.Info属性的一部分提供给ISubDependencyResolver。这会使实现这一点变得非常简单。不幸的是,它是内部的,我是这样做的使用隐藏成员感觉不太好。我玩过IContributeComponentModelConstruction接口,它很容易检查属性,但我不知道如何将覆盖与特定构造函数的特定参数关联。希望ConstructorDependenciesModelInstitute是关键。谢谢!