剛剛開始使用ninject進行遊戲 - 我無法擺脫此問題。考慮這種設置:Ninject使用InRequestScope處置訂單
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IDataTransaction>().To<DataTransaction>().InRequestScope();
kernel.Bind<IdbAnalytics>().To<dbAnalytics>().InRequestScope();
kernel.Bind<IdbMembership>().To<dbMembership>().InRequestScope();
kernel.Bind<IAnalyticsWork>().To<AnalyticsWork>().InRequestScope();
kernel.Bind<IMembershipWork>().To<MembershipWork>().InRequestScope();
kernel.Bind<ILog>().To<Log>().InRequestScope();
...
}
隨着登錄被注入到上述類別:
public class AnalyticsWork : IAnalyticsWork, IDisposable
{
private readonly IdbAnalytics _Context;
private readonly ILog _Log;
public AnalyticsWork(IdbAnalytics Context, ILog Log)
{
_Context = Context;
_Log = Log;
_Log.Write(LogEntryType.DEBUG, "Object Created");
}
...
}
此問題是Log對象被佈置在所述其他對象的提前(AnalyticsWork/MembershipWork)。有什麼方法可以設置物品應該被處理的訂單嗎?或者這個設置是否有缺陷?
這可能只是一個問題,如果你的類在'Dispose'方法內調用'ILog',這看起來像是一個設計缺陷。你應該儘可能少地使用你的dispose方法。否則,讓你成爲'Log'類的單例。 – Steven 2012-07-17 11:26:13