방금 시작한 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");
}
...
}
이 문제는 로그 객체가 다른 객체에 앞서 폐기 도착이다 (AnalyticsWork/MembershipWork). 항목을 폐기해야하는 순서를 설정할 방법이 있습니까? 또는이 설정에 결함이 있습니까?
이것은 클래스가 디자인 상 결함처럼 보이는'Dispose' 메서드 내에서'ILog'를 호출하는 경우에만 문제가 될 것입니다. dispose 메소드에서는 가능한 한 작게 수행해야합니다. 그렇지 않으면'Log' 클래스 싱글 톤을 만드십시오. – Steven