CA2000在类级对象上警告



我有一个在类级别声明的对象,该对象发出CA2000警告。我如何从下面的代码中摆脱CA2000警告?

public partial class someclass : Window
{
    System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog()
    {
        AddExtension = true,
        CheckFileExists = true,
        CheckPathExists = true,
        DefaultExt = "xsd",
        FileName = lastFileName,
        Filter = "XML Schema Definitions (*.xsd)|*.xsd|All Files (*.*)|*.*",
        InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop),
        RestoreDirectory = true,
        Title = "Open an XML Schema Definition File"
    };
}

方法" simpathfinder.simpathfinder(),对象'new openfiledialog()'在所有例外路径上都没有处理。在对象上所有引用之前,请在对象" new OpenFileDialog()"上call system.idisposable.dispose。

ca2000说,您的班级实例拥有一个可支配对象,该对象应在您的班级实例脱离范围之前将其处置为免费使用(未管理)资源。

这样做的一种常见模式是实现IDisposable接口和protected virtual Dispose方法:

public partial class someclass : Window, IDisposable // implement IDisposable
{
    // shortened for brevity
    System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
            dlg.Dispose(); // dispose the dialog
    }
    public void Dispose() // IDisposable implementation
    {
        Dispose(true);
        // tell the GC that there's no need for a finalizer call
        GC.SuppressFinalize(this); 
    }
}

阅读有关Dispose-Pattern

的更多信息

作为旁注:似乎您的混合WPF和Windows表单。您从Window继承(我认为是System.Windows.Window,因为您的问题被标记为WPF),但请尝试使用System.Windows.Forms.OpenFileDialog
混合这两个UI框架不是一个好主意。改用Microsoft.Win32.OpenFileDialog

相关内容

  • 没有找到相关文章

最新更新