ShadowCopy在.Net中有通过复制程序集来保持文件锁定的功能。有两个属性:
AppDomain.ShadowCopyFiles的AppDomainSetupAppDomainSetup.ShadowCopyFiles中的string[]AppDomainSetup有string Value[]字段,用于存储配置。奇怪的是,AppDomainSetup.ShadowCopyFiles是一个字符串属性,我们需要设置"true"或"false",而不是真正的bool类型。
下面是AppDomainSetup中该属性的实现
public string ShadowCopyFiles
{
get
{
return this.Value[8];
}
set
{
if (value != null && string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0)
this.Value[8] = value;
else
this.Value[8] = (string) null;
}
}下面是AppDomain.ShadowCopyFiles的一个实现:
public bool ShadowCopyFiles
{
get {
String s = FusionStore.ShadowCopyFiles;
if((s != null) &&
(String.Compare(s, "true", StringComparison.OrdinalIgnoreCase) == 0))
return true;
else
return false;
}
} 但是为什么在AppDomainSetup中这个属性是string呢?为什么微软没有像在bool中那样使用某些AppDomain.ShadowCopyFiles转换逻辑
奇怪的是,位于AppDomainSetup中的代码有点难闻,而我只是在想,这是否真的是我所错过的原因呢?
发布于 2013-12-30 00:19:40
在.NET的早期版本中,这是一个错误,MS已经决定不修复它,因为它会破坏现有的代码。
看这个链接。
http://connect.microsoft.com/VisualStudio/feedback/details/295269/appdomainsetup-shadowcopyfiles-should-be-of-the-type-bool-instead-of-string
https://stackoverflow.com/questions/20831482
复制相似问题