I have the follow code but it is awkward. How could I better structure it? Do I have to make my consuming class implement IDisposable and conditionally construct the network access class and dispose it when I am done?
    protected void ValidateExportDirectoryExists()     {         if (useNetworkAccess)         {             using (new Core.NetworkAccess(username, password, domain))             {                 CheckExportDirectoryExists();             }         }         else         {             CheckExportDirectoryExists();         }     } 
                One option, which is somewhat nasty but would work, based on the fact that the C# compiler calls Dispose only if the resource is non-null:
protected void ValidateExportDirectoryExists() {     using (useNetworkAccess                 ? new Core.NetworkAccess(username, password, domain)                : null)     {         CheckExportDirectoryExists();     } }   Another alternative would be to write a static method which returned either null or a NetworkAccess:
private Core.NetworkAccess CreateNetworkAccessIfNecessary() {     return useNetworkAccess         ? new Core.NetworkAccess(username, password, domain)) : null; }   Then:
protected void ValidateExportDirectoryExists() {     using (CreateNetworkAccessIfNecessary())     {         CheckExportDirectoryExists();     } }   Again, I'm still not sure I don't prefer the original... it really depends on how often you need this pattern.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With