【发布时间】:2014-01-16 20:42:46
【问题描述】:
.Net 中有 ShadowCopy 功能,可通过复制程序集来保持文件锁定。 有两个属性:
-
AppDomain.ShadowCopyFiles使用 AppDomainSetup -
AppDomainSetup.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?为什么微软没有像AppDomain.ShadowCopyFiles那样使用一些bool转换逻辑?
奇怪的是,位于AppDomainSetup 中的代码这么臭,我只是在想我错过了有什么真正的原因吗?
【问题讨论】:
标签: c# .net base-class-library shadow-copy