我可以在.NET Framework(3.5和4)中以某种方式将整个命名空间标记为过时,或者可选地将整个项目标记为?
答案 0 :(得分:11)
这是不可能的。我想原因是命名空间可以跨越不同的程序集,甚至库的用户也可以使用相同的命名空间,因此它不仅会废弃您的代码。命名空间基本上是名称前缀的语法糖。命名空间甚至不能成为属性的目标。
答案 1 :(得分:1)
过时的属性不能应用于名称空间。 ObsoleteAttribute用。来装饰
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Constructor|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Event|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited = false)]
。
答案 2 :(得分:0)
您不能将整个名称空间标记为过时,但如果您拥有该名称空间中的所有代码,则可以使用继承来同时拥有两个名称空间:
namespace New.Namespace
{
/// <summary>
/// Application contract
/// </summary>
public class Application
{
/// <summary>
/// Application Name
/// </summary>
public string ApplicationName { get; set; }
/// <summary>
/// Application Id
/// </summary>
public int ApplicationId { get; set; }
}
}
namespace old.namespace
{
/// <summary>
/// Application contract
/// </summary>
[Obsolete]
public class Application : New.Namespace.Application
{
}
}
您也必须在旧名称空间中的所有类(枚举,结构等)都这样做,以提供向后和向前的兼容性。