public override void Validate(object value)
{
var directory = (string)value;
Guard.NotNullOrEmpty(directory, "value");
var directoryExisted = Directory.Exists(directory);
if(!directoryExisted)
{
Directory.CreateDirectory(directory);
}
try
{
var tempPath = Path.Combine(directory, Path.GetRandomFileName());
File.Create(tempPath).Dispose();
File.Delete(tempPath);
}
finally
{
if(!directoryExisted)
{
try
{
// Do not recurse just in case it has been populated.
Directory.Delete(directory, recursive: false);
}
catch(IOException) { }
}
}
}