public
Last active

  • Download Gist
object-inializer-disposable.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
public sealed class Dependency : IDisposable
{
public string SomeProperty { get; set; }
public void Dispose()
{
}
}
 
public sealed class Owner : IDisposable
{
readonly Dependency dependency;
 
public Owner()
{
// This will violate CA2000 Dispose objects before losing scope
dependency = new Dependency { SomeProperty = "Blah" };
}
 
public void Dispose()
{
dependency.Dispose();
}
}
 
//Here's what it generates
public sealed class Owner : IDisposable
{
// Fields
private Dependency dependency;
 
// Methods
public Owner()
{
// <>g__initLocal0 is never disposed.
Dependency <>g__initLocal0 = new Dependency {
SomeProperty = "Blah"
};
this.dependency = <>g__initLocal0;
}
 
public void Dispose()
{
this.dependency.Dispose();
}
}
 

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.