我想知道我是否可以在UserControl
中管理一次性资源。我通过在父表单中管理它来解决这个问题,但它似乎应该是可行的。
我感觉到的问题是我无法覆盖Dispose,因为UserControl
实现了它,但它不是虚拟的。
有没有办法解决这个问题而不将逻辑委托给父表单?
public partial class MyControl : UserControl {
MyContext context;
public void Add(Widget widget) {
if(this.context== null)
this.context= new MyContext();
context.Add(objectToAdd);
}
public void Save() {
if(context!= null)
context.Save();
}
// --> I'd like to override Dispose() so I can call context.Dispose()
// but I can't because UserControl implements it and it is not virtual
}
答案 0 :(得分:2)
在这种情况下,我将生成的Dispose方法移动到主文件并进行扩展。 Visual Studio尊重这一点。
另一种方法是使用部分方法(C#3.0)。
链接到这里:How do I add Dispose functionality to a C# UserControl?