CA2000 when Returning Disposable Object from Method

c#, ca2000, code-analysis, idisposable

Solution

I would recommend that you suppress the CA2000 warning on each individual factory method, or perhaps on the entire class that contains them (but only if that is the only function of that class).

I further recommend that you include a justification:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability",
    "CA2000:Dispose objects before losing scope",
    Justification = "This is a factory method. Caller must dispose")]

Problem

I have a factory method that builds objects that implement `IDisposable`. Ultimately it is the callers that manage the lifetime of the created objects. This design is triggering a bunch of CA2000 errors. Is there something fundamentally incorrect in my design, does it need refactoring, or is it just getting too excited about static code analysis warnings? The factory method ``` public static DisposableType BuildTheDisposableType(string param1, int param2) { var theDisposable = new DisposableType(); // Do some work to setup theDisposable return theDisposable } ``` A caller ``` using(var dt = FactoryClass.BuildTheDisposableType("data", 4)) { // use dt } ```

Original source