CA1001报告了扩展类中的静态方法

时间:2018-02-13 17:51:51

标签: c# async-await code-analysis dotnet-httpclient

我有一个生成CA1001

的扩展类方法

警告:“警告CA1001在'ImageSourceExtensions.d__8'上实现IDisposable,因为它创建了以下IDisposable类型的成员:'HttpClient'。”

方法:

    File file = new File("/path/to/my.ps");

    Socket socket = null;
    DataOutputStream out = null;
    FileInputStream inputStream = null;
    try {
        socket = new Socket(printerIP, printerPort);
        out = new DataOutputStream(socket.getOutputStream());
        DataInputStream input = new DataInputStream(socket.getInputStream());
        inputStream = new FileInputStream(file);
        byte[] buffer = new byte[8000];

        while (inputStream.read(buffer) != -1) {
            out.write(buffer);

        }

        out.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }

对于类似的扩展方法,我有几个CA1001警告实例。我能想到的选择:

1)使用[SuppressMessage]

忽略它们

2)将一次性物品放在实现IDisposable的类实例中,并将它们传递到扩展名

压抑他们感觉对我来说是正确的,但任何相反的意见都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

无论如何,你不应该处置HttpClient,将其作为静态引用并重新使用它,这就是它的目的。不断重新创建can lead to performance issues。如果你获得HttpClient的CA1001,你绝对应该压制那个。