I want to use using statement, but may need to change the value of the variable that I "use" if the object it should point to does not exist.
I thought of something like this (for registry access and 32/64 windows - though this is my current use case, this is a general question):
using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MS\Platform"))
{
if (key == null)
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\MS\Platform");
// use key
}
Above code does not compile:
error CS1656: Cannot assign to 'key' because it is a 'using variable'
I can solve this by not using using but try/catch/finally, and/or testing if the registry key exists before using it.
Is there a way to keep using using, with the correct object being disposed afterwards?