Устаревшее целое пространство имен?
Могу ли я как-то пометить все пространство имен как устаревшее в.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
{
}
}
Вам также придется сделать это для всех классов (перечислений, структур и т. Д.) В вашем старом пространстве имен, чтобы обеспечить обратную и прямую совместимость.