如果有一个新项目(ProjNew),我想在其他项目(ProjOld)上放置几个班级。暧昧的班级名称
问题是我想维护标记为Obsolete的旧类以避免运行我的所有项目并检查它们是否使用它。
但是这样可能会引发模糊的类名错误,因为我没有明确地通过名称空间进行调用。
有没有办法在过时的情况下说什么程序集在歧义情况下使用?
如果有一个新项目(ProjNew),我想在其他项目(ProjOld)上放置几个班级。暧昧的班级名称
问题是我想维护标记为Obsolete的旧类以避免运行我的所有项目并检查它们是否使用它。
但是这样可能会引发模糊的类名错误,因为我没有明确地通过名称空间进行调用。
有没有办法在过时的情况下说什么程序集在歧义情况下使用?
标记您的班级,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()
{
}
}
您可以创建类为partial classes并标记你需要过时的方法。
这将允许您将您的课程分成多个文件,并仍然使用相同的课程名称。
部分类不会跨越程序集边界。 – 2010-04-29 16:56:29
啊!我没有意识到,但它是有道理的。欢呼埃里克的头。 – 2010-04-30 09:27:40
我不确定我是否完全理解您的问题,但这可能有所帮助。您可以使用Using指令来阐明要使用哪个类。示例: 使用ClassA = OldAssembly.ClassA;
任何对ClassA的引用都会引用OldAssembly。
好的。看来,如果我将相同的类添加到另一个命名空间,ambiguos错误只是我在编译时发生的。 我担心它会在运行时发生,但我测试它并没有问题。
感谢
这是不完全清楚你问什么,但我给它一个想试试。
假设你有两个DLL,old.dll和new.dll,这两者有一个C型命名空间ň你可以这样做:
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。
这是否解决您的问题?
这是否说明OP需要有2个同名的类?一个类可以被标记为过时,而同一名称空间中使用了另一个具有相同名称的类? (通过它的外观,您的示例演示了将类成员标记为已过时,而不是类本身) – 2010-04-29 16:17:37