为什么AppDomain.ShadowCopyFiles是字符串



.Net 中具有 ShadowCopy 功能,可通过复制程序集来保留文件锁定。有两个属性:

  1. 使用 AppDomainSetup 的AppDomain.ShadowCopyFiles
  2. 将其存储在内部string[]中的AppDomainSetup.ShadowCopyFiles

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?为什么Microsoft没有像AppDomain.ShadowCopyFiles那样使用一些bool转换逻辑?

奇怪的是,

这么臭的代码位于AppDomainSetup,我只是在想我失踪的真正原因是什么?

.NET的早期版本中这是一个错误,MS决定不修复它,因为它会破坏现有代码。

请参阅此链接。

http://connect.microsoft.com/VisualStudio/feedback/details/295269/appdomainsetup-shadowcopyfiles-should-be-of-the-type-bool-instead-of-string

相关内容

  • 没有找到相关文章

最新更新