Существует ли стандарт для сообщения при устаревании типа или метода с другим
Я использую:
[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) {