非限定类名与系统命名空间中的新.NET类碰撞​​

时间:2016-02-29 22:17:55

标签: c# .net namespaces

我有一个(一个很多)遗留代码,它引用了我的一个静态类,名为AppContext。遗憾的是,这个类的引用都已在此遗留代码中通过命名空间using声明得到解决。为了论证,让我们说命名空间是“MyNamespace”(它不是,但它同样糟糕)

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

using System;
using MyNamespace;

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

现在每当我找到一行代码如下:

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

...我会收到错误,告诉我 MyProperty 不是AppContext的公认成员。

现在,当我的用户推出包含.NET 4.6(或.NET 4.6.1)的Windows更新时,我发现我的分布式代码已经遍布整个地方。

我知道我的强力解决方案是去我引用我的类的每个地方并应用一个明确的命名空间。这是明智之举,我会继续前进。我的问题是我有一个很大的安装基础,并且每个地方都要修复它,因为每个人都会花费大量的时间和大量的工作(特别是考虑回归测试/转向生产等)。

有没有办法解决名称冲突,除了为我班级的每个参考添加一个明确的命名空间?

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

1 个答案:

答案 0 :(得分:3)

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