Существует ли стандарт для сообщения при устаревании типа или метода с другим

Я использую:

[Obsolete("Please use [NEW API] instead.")]

осудить публичные API, но я не уверен, что является стандартом для [NEW API]. Следующие примеры кажутся довольно стандартными:

[Obsolete("Please use Method2() instead.")] //This seems to be ok if Method2 is in the same class
[Obsolete("Please use Class2.Method1() instead.")] //This seems to be ok if we are referencing a different class in the same namespace
[Obsolete("Please use Namespace.Class2.Method1() instead.")] //This seems to be ok if we are referencing a different class in a different namespace

Но он начинает расплываться, когда вы заменяете API определенным методом аргументами:

[Obsolete("Please use Method2(string, string) instead.")]

Это правильный способ ссылки на конкретный тип метода или я включаю имена переменных? Например:

[Obsolete("Please use Method2(string arg1, string arg2) instead.")]

А теперь сложнее, как насчет того, если тип был перемещен в другую сборку, например:

[Obsolete("Please use Namespace.ClassName.Method2(), AssemblyName instead.")]
[Obsolete("Please use AssemblyName!Namespace.ClassName.Method2() instead.")]

Какой путь правильный или есть другой путь?

1 ответ

Я думаю, что вы на правильном пути, и это соответствует тому, что я делал в прошлом. Я часто чувствовал, что может быть больше перегрузок для ObsoleteAttribute (возможно, несколько атрибутов, означающих немного разные вещи даже?). Взгляните на некоторые примеры из.NET Framework, которые делают именно то, что вы упоминаете:

[ObsoleteAttribute("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform

[Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")] 
public Hashtable(int capacity, float loadFactor, IHashCodeProvider hcp, IComparer comparer) : this(capacity, loadFactor) { 
Другие вопросы по тегам