C# setting members from using statement

class A
{
  TypeX PropertyX;

  void SomeMethod()
  {
    using (DisposableType y = new DisposableType())
    {
      PropertyX = y.GetX();
    }
  }
}

What happens to PropertyX when y is being disposed?
Would I rather do this, if I don’t know what is being disposed with Y?

class A : IDisposable
{
  TypeX PropertyX { get; set;}
  DisposableType Y { get; set; }

  void SomeMethod()
  {
    using (Y = new DisposableType())
    {
      PropertyX = Y.GetX();
    }
  }

 void Dispose()
 {
   Y.Dispose();
 }

}

>Solution :

Your MainWindow will not get disposed, but automation instance will get disposed after the execution leaves using block. Another way to write this would be:

    using var automation = new UIA2Automation();
    MainWindow = launcher.App.GetMainWindow(automation);

Quick Google search lead me to FlaUI project and it looks like it is what you are using. Looking at the code samples, it looks like your approach is the correct one.

Leave a Reply