如果有一个新项目(ProjNew),我想在其中放置几个在其他项目(ProjOld)上的类。
问题是我想维护标有 Obsolete 的旧类,以避免运行我所有的项目并检查他们是否使用它。
但是这样可能会引发一个模棱两可的类名错误,因为我没有通过命名空间显式调用。
有没有办法在过时的情况下说在歧义情况下使用什么程序集?
不完全清楚你在问什么,但无论如何我都会试一试。
假设您有两个 DLL,old.dll 和 new.dll,它们都有一个类型为 C 的命名空间 N。您可以这样做:
csc /r:NEW=new.dll /r:OLD=old.dll foo.cs
然后在 foo.cs 你可以说
extern alias NEW;
extern alias OLD;
class D : NEW::N.C { }
class E : OLD::N.C { }
D 会继承 new.dll 中的 NC,E 会继承 old.dll 中的 NC。
这能解决你的问题吗?
我不确定我是否完全理解您的问题,但这可能会有所帮助。您可以使用 Using 指令来阐明要使用的类。一个例子:使用 ClassA = OldAssembly.ClassA;
任何对 ClassA 的引用都将引用 OldAssembly。
您可以将类创建为部分类,并标记您需要废弃的方法。
这将允许您将类划分为多个文件,并且仍然使用相同的类名。
好的。似乎如果我将同一个类添加到另一个命名空间,那么歧义错误只是我在编译时发生的。我担心它会在运行时发生,但我测试它并没有问题。
谢谢
用System.ObsoleteAttribute标记你的类
http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx
using System;
class Program
{
static void Main()
{
MethodA();
}
[Obsolete("Use MethodB instead")]
static void MethodA()
{
}
static void MethodB()
{
}
}