【发布时间】:2013-12-13 01:33:46
【问题描述】:
我有一个使用 kernel.Get<SomeClass>(); 的控制台应用程序,但是,SomeClass 依赖于 SomeDisposableClass。当SomeClass 被垃圾回收时,如何设置我的绑定以处理SomeDisposableClass?我的 MVC 应用程序使用 InRequestScope,效果很好,但控制台应用程序似乎没有类似的范围。
这里的例子:
public class SomeClass {
public SomeClass(SomeDisposableClass c) {
this.C = c;
}
private SomeDisposableClass C { get; set; }
// ... Business Methods ... //
}
我的模块
kernel.Bind<ISomeClass>().To<SomeClass>().In???Scope()
我的控制台应用
public static void Main() {
SomeFunc();
SomeFunc();
Console.ReadLine();
}
public static void SomeFunc() {
ISomeClass someClass = kernel.Get<ISomeClass>();
// work
}
我希望在 SomeFunc 完成时(或在调用垃圾收集器时)处理 SomeDisposableClass。但我不确定要使用哪个绑定范围。 InTransientScope 从不调用 dispose。我是否只需将SomeClass 设为一次性并实现Dispose() 并使用using 语句将我的所有用法包装在控制台应用程序中?
【问题讨论】:
标签: c# dependency-injection scope ninject