0
我有類,我使用它來註冊爲GlobalFilter來處理execpions。我註冊在global.asax上,那裏一切都很好。
當我的操作發生異常時,我輸入OhException方法並獲取NullReference異常,因爲LogManager屬性爲null。
爲什麼nInject不注入它?Ninject注入的屬性仍然爲空
public class HandleErrorFilterAttribute : HandleErrorAttribute
{
[Inject]
public ILogManager LogManager { get; set; }
public override void OnException(ExceptionContext filterContext)
{
LogManager.LogError("Unhandled exception thrown", filterContext.Exception);
base.OnException(filterContext);
}
}
服務注入下面這段代碼(我忘了寫它)
kernel.Bind<ILogManager>().To<LogManager>();
還有我創建
public void RegisterGlobalFilters()
{
var handleErrorAttribute = new HandleErrorFilterAttribute();
GlobalFilters.Filters.Add(handleErrorAttribute);
}
默認情況下,屬性由CLR創建,而不是由您的DI庫創建。 DI庫只能在自己創建的對象中注入依賴關係,或者當您明確告訴它建立此對象時。那麼你究竟做了什麼配置,讓你覺得Ninject應該注入這個屬性? – Steven 2015-02-10 20:53:00
您是否閱讀過文檔?你有沒有專門查看[this](https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-filters)?你看過[這個SO條目](http://stackoverflow.com/questions/5078046/ninject-and-mvc3-dependency-injection-to-action-filters)它涵蓋了你的問題? – BatteryBackupUnit 2015-02-11 06:13:18
@Steven:感謝您的評論,我支持我更好地理解DI,我通過新的關鍵工作創建了實例,所以這會造成問題。將您的評論粘貼爲答案,我會將其標記爲解決方案 – Jacek 2015-02-16 07:13:19