我有一个生成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的类实例中,并将它们传递到扩展名
压抑他们感觉对我来说是正确的,但任何相反的意见都会受到赞赏。
答案 0 :(得分:2)
无论如何,你不应该处置HttpClient
,将其作为静态引用并重新使用它,这就是它的目的。不断重新创建can lead to performance issues。如果你获得HttpClient
的CA1001,你绝对应该压制那个。