2009-12-17 124 views
1

我有我的asp.net-mvc项目的[Logger]属性。 这个LoggerAttribute在它的构造函数中需要一个ILoggerService。注入属性?

对于常规对象(例如我的控制器),它可以工作,但属性似乎没有解决。

我该如何让Turbine注入ILoggerService?

回答

2

您的Logger属性是一个Action | Result | Error | Authorization过滤器吗?如果是这样,您可以使用InjectableFilterAttribute类来指定Turbine为您注入的过滤器的类型。这样你可以支持ctor注入你的服务。

要了解如何完成这项工作,请查看随Turbine一起提供的Filter Injection sample

+0

不错:)重点是我在找什么 – 2009-12-21 07:56:06

3

属性参数必须是常量表达式,所以您不能实例化要赋予属性的对象。

http://msdn.microsoft.com/en-us/library/5y0xyec6.aspx

我会做的是需要你的控制器在它的构造函数接受ILoggerServer和具有涡轮注入到你的控制器的构造函数。

+0

要添加到这个正确的答案,你必须考虑为什么这是这种情况。属性嵌入在程序集的元数据中,并适用于类型,而不是类型的实例。如果属性参数不是恒定的,则情况就不是这样。 – jason 2009-12-17 17:06:50