废弃整个命名空间?

时间:2012-01-11 11:54:35

标签: .net attributes namespaces obsolete

我可以在.NET Framework(3.5和4)中以某种方式将整个命名空间标记为过时,或者可选地将整个项目标记为?

3 个答案:

答案 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
    {       

    }
}

您也必须在旧名称空间中的所有类(枚举,结构等)都这样做,以提供向后和向前的兼容性。