【问题标题】:Why AppDomain.ShadowCopyFiles is string?为什么 AppDomain.ShadowCopyFiles 是字符串?
【发布时间】:2014-01-16 20:42:46
【问题描述】:

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

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

AppDomainSetupstring 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


【解决方案1】:

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

查看此链接。

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

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2020-09-25
    • 2014-11-20
    • 1970-01-01
    • 2016-06-27
    • 2019-08-13
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多