2

で使い捨てリソースを管理できるかどうかを調べようとしてい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
}
4

1 に答える 1

2

このような場合、生成されたDisposeメソッドをメインファイルに移動して拡張します。VisualStudioはこれを尊重します。

もう1つのアプローチは、部分的な方法(C#3.0)を使用することです。

ここにリンク:C#UserControlにDispose機能を追加するにはどうすればよいですか?

于 2013-01-19T05:18:35.087 に答える