我正在尝试解决如何执行以下操作:
[CustomAnnotation(thisVariableShouldBeInjected)]
public class MyClass
{
// Normal class stuff
}
现在,数据注释正在装饰一个WCF服务类,它本身正在进行构造函数注入。理想情况下,我想使用Ninject IOC容器注入带有值的注释,但是这个问题与容器无关。
我刚刚从静态类重构了Annotation类,我不想将其转换回来。
我很乐意进行属性注入,(构造函数注入不适用于数据注释,因为它们必须是afaik的常量表达式)。我只是不知道在这种情况下如何。
欢迎任何建议!
回答问题/评论:
在此特定实例中,WCF服务使用属性进行批注,其中一些属性执行审计服务请求和统计信息收集等功能。在这些实例中,Annotation类由WCF基础结构直接调用,我无法在构造函数阶段访问它们。
我正在尝试基于反射的属性注入(如建议的那样)。在这种情况下,注释类是全局的这一事实实际上有助于我,因为我试图注入存储库实例 - 我只需要一个。
这可能必须是我最终进行注射的方式。然而,在我的书中,它比静态类及其对存储库的静态引用要好得多。
答案 0 :(得分:1)
由于属性是类上的编译时元数据,因此您无法在运行时向其中注入一个会影响特定实例的值。
您可以使用反射在运行时更改属性的值(属性),但它可以是全局的,而不是任何特定实例。