Устаревшее целое пространство имен?

Могу ли я как-то пометить все пространство имен как устаревшее в.NET Framework (3.5 и 4) или, альтернативно, весь проект?

2 ответа

Решение

Это невозможно. Я полагаю, причина в том, что пространство имен может охватывать разные сборки, и даже пользователи библиотеки могут использовать одно и то же пространство имен, поэтому оно устареет не только в вашем коде. Пространство имен в основном является синтаксическим сахаром для префикса имени. Пространство имен не может даже быть целью атрибута.

Устаревший атрибут не может быть применен к пространствам имен. Устаревший атрибут украшен [AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Constructor|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Event|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited = false)] ,

Вы не можете пометить все пространство имен как устаревшее, но если вы владеете всем кодом в пространстве имен, вы можете использовать наследование, чтобы иметь оба пространства имен одновременно:

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
    {       

    }
}

Вам также придется сделать это для всех классов (перечислений, структур и т. Д.) В вашем старом пространстве имен, чтобы обеспечить обратную и прямую совместимость.

Другие вопросы по тегам