public interface IDisposableObject : IDisposable
public class DisposableObject : IDisposableObject
public RandomObjectB B {get; set;}
public DisposableObject()
B = new RandomObjectB { B = 200 };
GC.SuppressFinalize(this);
protected virtual void Dispose(bool disposing)
public RandomObjectA CreateRandomObjectA()
return new RandomObjectA { A = 100 };
public class RandomObjectA
public int A { get; set; }
public class RandomObjectB
public int B { get; set; }
public static void Main()
using(var dObj = new DisposableObject())
AInst = dObj.CreateRandomObjectA();
Console.WriteLine("Inside Using");
Console.WriteLine($"AInst : {AInst.A}");
Console.WriteLine("Outside Using");
Console.WriteLine($"AInst : {AInst.A}");