Один вариант, который несколько неприятен, но сработает, основан на том факте, что компилятор C # вызывает Dispose
, только если ресурс ненулевой :
protected void ValidateExportDirectoryExists()
{
using (useNetworkAccess
? new Core.NetworkAccess(username, password, domain)
: null)
{
CheckExportDirectoryExists();
}
}
Другой альтернативой было бы написать статический метод, который бы возвратил либо нуль, либо NetworkAccess:
private Core.NetworkAccess CreateNetworkAccessIfNecessary()
{
return useNetworkAccess
? new Core.NetworkAccess(username, password, domain)) : null;
}
Затем:
protected void ValidateExportDirectoryExists()
{
using (CreateNetworkAccessIfNecessary())
{
CheckExportDirectoryExists();
}
}
Опять же, я все еще не уверен, что не предпочитаюоригинал ... это действительно зависит от того, как часто вам нужен этот шаблон.