非限定类名与系统命名空间中的新 .NET 类冲突

本文关键字:命名空间 NET 冲突 系统 | 更新日期: 2023-09-27 18:36:43

我有很多遗留代码引用我的一个静态类,称为AppContext。 遗憾的是,对此类的引用都已通过命名空间using声明在此遗留代码中解析。 为了便于讨论,假设命名空间是"MyNamespace"(它不是,但它同样糟糕)

因此,我有很多很多模块的开头看起来像这样:

using System;
using MyNamespace;

我现在的问题是,Microsoft在他们的.NET Framework 4.6中引入了一个新的System.AppContext类。 显然,我的所有代码都使用 System .

现在,每当我到达一行如下所示的代码时:

if (AppContext.MyProperty == "some value")

。我将收到一个错误,告诉我 MyProperty 不是 AppContext 的公认成员。

现在,当我的用户推出包含.NET 4.6(或.NET 4.6.1)的Windows更新时,我发现我的分布式代码到处都是。

我知道我的蛮力解决方案是转到我引用类的每个地方并应用一个明确的命名空间。 这是一件明智的事情,我会继续这样做。 我的问题是我有一个很大的安装基础,为每个人到处解决这个问题将花费大量时间和大量工作(特别是考虑到回归测试/迁移到生产环境等)

除了向我的类的每个引用添加一个明确的命名空间之外,有没有办法解决名称冲突?

真的很想知道是否有一个快速/短期的解决方案,我可以用来防止我的用户使用 Windows 更新破坏我的系统,直到我可以在任何地方推出适当的解决方案。

非限定类名与系统命名空间中的新 .NET 类冲突

using AppContext = MyNamespace.AppContext添加到每个文件的顶部。