依赖注入到类注释中

时间:2010-10-25 21:12:20

标签: c# ioc-container data-annotations

我正在尝试解决如何执行以下操作:

[CustomAnnotation(thisVariableShouldBeInjected)]
public class MyClass
{
    // Normal class stuff
}

现在,数据注释正在装饰一个WCF服务类,它本身正在进行构造函数注入。理想情况下,我想使用Ninject IOC容器注入带有值的注释,但是这个问题与容器无关。

我刚刚从静态类重构了Annotation类,我不想将其转换回来。

我很乐意进行属性注入,(构造函数注入不适用于数据注释,因为它们必须是afaik的常量表达式)。我只是不知道在这种情况下如何。

欢迎任何建议!


回答问题/评论:

在此特定实例中,WCF服务使用属性进行批注,其中一些属性执行审计服务请求和统计信息收集等功能。在这些实例中,Annotation类由WCF基础结构直接调用,我无法在构造函数阶段访问它们。

我正在尝试基于反射的属性注入(如建议的那样)。在这种情况下,注释类是全局的这一事实实际上有助于我,因为我试图注入存储库实例 - 我只需要一个。

这可能必须是我最终进行注射的方式。然而,在我的书中,它比静态类及其对存储库的静态引用要好得多。

1 个答案:

答案 0 :(得分:1)

由于属性是类上的编译时元数据,因此您无法在运行时向其中注入一个会影响特定实例的值。

您可以使用反射在运行时更改属性的值(属性),但它可以是全局的,而不是任何特定实例。