【发布时间】:2015-03-21 05:20:12
【问题描述】:
我正在尝试编写一个身份验证属性以应用于 WCF 服务应用程序中的某些服务(使用 Unity 和 Unity.Wcf)。
身份验证由外部(服务应用程序)身份验证接口执行,该接口当前通过构造注入注入服务类并在每个服务方法中直接调用。
这导致每个服务方法中出现大量重复代码。
相反,我想将其移至属性。
但是,我需要在属性中可以访问身份验证接口。
显然,如果我在属性上使用构造注入,那么在使用属性装饰我的服务方法时,它是一个必需参数,但此时我无法访问它,因为它是由 Unity 连接的。
如何在我的属性中注入(或以其他方式访问)身份验证接口?
【问题讨论】:
-
要么退回到 Service Locator 并使属性成为 Humble Object,它仅代表它解析的服务,要么使属性被动,如 here 和 here 所述。
-
谢谢 Steven,我会阅读这些链接
-
我的观点基于Mark Seeman's book,因此我将服务定位器视为一种反模式。但是,如果 Steven 给出了答案而不是评论,我会投票支持指向 passive attributes 的链接。
-
您可以使用 WCF 扩展点在每个 wcf 请求上执行一些代码,而不是将依赖项注入到属性中 - 这是带有一些说明的 stackoverflow 文章:stackoverflow.com/questions/4091384/…
-
@DanKaufman 这正是我已经在做的——我需要在其中注入一个依赖项......
标签: c# wcf dependency-injection attributes unity-container