我正在創建一個範圍爲HTTPContextScoped的類型的實例。我想弄清楚如何將這個特定的實例注入到一個屬性中,而這個屬性我沒有控制權。安裝程序注入與結構映射的問題
我想的UnitOfWork的具體實例注入在屬性IUnitOfWork類型的財產(見下文代碼)
這裏是我的ObjectFactory.Initialize()部分的方法我指的是:
ObjectFactory.Initialize(x =>
{
//...
//additional content
//...
x.For<IUnitOfWork>()
.HttpContextScoped()
.Use(context => new UnitOfWork(
context.GetInstance<ISessionFactory>()));
x.SetAllProperties(context =>
{
context.Matching(p =>
p.DeclaringType == typeof(UnitOfWorkAttribute));
context.OfType<IUnitOfWork>();
});
屬性類:
public class UnitOfWorkAttribute : ActionFilterAttribute {
public IUnitOfWork UnitOfWork { get; set; }
public UnitOfWorkAttribute() {
Order = 0;
}
public void OnActionExecuting(ActionExecutingContext filterContext) {
UnitOfWork.Begin();
}
public void OnActionExecuted(ActionExecutedContext filterContext) {
UnitOfWork.End();
}
}
我試圖按照Jeremy Miller的一個使用標準的例子來做,但我沒有做正確的事情。
任何想法我做錯了什麼?
注意它不會創造,因爲我用它在其他地方的實例的UnitOfWork,但我特別不正確(或全部)注入該屬性的屬性與該實例(或任何爲此事)。
你不能在屬性上使用依賴注入,因爲屬性是由.NET框架創建和控制的,如果你顯示了一些你正在做的事情(比如你的'UnitOfWorkAttribute'的代碼)我們可能會有一個替代解決方案 – Steven 2011-05-04 13:20:28
@Steven:我用完整的代碼更新了UnitOfWorkAttibute類,但是,儘管你根據這個http://groups.google.com/group/structuremap-users/browse_thread/thread/f5d2ca90dae4017e/0323e2175a3ec020?lnk=raot&pli=1帖子(傑里米米勒回答),這張海報試圖完成幾乎相同的事情有他無法訪問的情況,Jeremy似乎表明這是可能的。 – pghtech 2011-05-04 13:37:30
據我所知,鏈接到的線程沒有提及屬性。您想要在屬性中注入屬性。 – Steven 2011-05-04 13:45:55