I have a console app that uses kernel.Get<SomeClass>();
However, SomeClass
has a dependency on SomeDisposableClass
. How can I set up my binding to dispose of SomeDisposableClass
when SomeClass
is garbage collected? My MVC app uses InRequestScope
and that works great, but there doesn't seem to be an analogous scope for console apps.
Example here:
public class SomeClass {
public SomeClass(SomeDisposableClass c) {
this.C = c;
}
private SomeDisposableClass C { get; set; }
// ... Business Methods ... //
}
My module
kernel.Bind<ISomeClass>().To<SomeClass>().In???Scope()
My console app
public static void Main() {
SomeFunc();
SomeFunc();
Console.ReadLine();
}
public static void SomeFunc() {
ISomeClass someClass = kernel.Get<ISomeClass>();
// work
}
I'd like for SomeDisposableClass
to be disposed when SomeFunc
is finished (or when the garbage collector is called). But I'm not sure of which binding scope to use. InTransientScope
doesn't ever call dispose. Do I just have to make SomeClass
disposable and implement Dispose()
and wrap all my usages in the console app with a using
statement?
SomeClass
implementIDisposable
, would you not? And Ninject should then callDispose()
on the previousSomeClass
instance when you invokeStartNewLifetime()
? Anyway, not my question, so I will step aside so the OP may render a verdict ... – Nalchik