Уведомить разработчика о методе «НЕ ИСПОЛЬЗОВАТЬ» - PullRequest
26 голосов
/ 26 августа 2008

Хорошо, я знаю, о чем вы думаете: «Зачем писать метод, который вы не хотите, чтобы люди использовали?» Правильно?

Короче говоря, у меня есть класс, который нужно сериализовать в XML. Для того, чтобы XmlSerializer сотворил магию, класс должен иметь пустой конструктор по умолчанию:

public class MyClass
{
  public MyClass()
  {
    // required for xml serialization
  }
}

Итак, мне нужно иметь его, но я не хочу, чтобы люди использовали , поэтому есть какой-либо атрибут, который можно использовать для пометки метода как "НЕ ИСПОЛЬЗУЙТЕ"

Я думал об использовании атрибута Устаревший (поскольку это может остановить сборку), но это просто кажется "неправильным", есть ли другой способ сделать это, или мне нужно идти вперед и прикусить пулю? :)

Обновление

Хорошо, я принял ответ Кита, так как, думаю, в глубине души я полностью согласен. Вот почему я задал вопрос в первую очередь, мне не нравится понятие наличия устаревшего атрибута.

Однако ...

Там есть по-прежнему проблема, в то время как мы получаем уведомление в intellisense, в идеале, мы хотели бы прервать сборку, так есть ли способ сделать это? Возможно создать собственный атрибут?

Был создан более сфокусированный вопрос здесь .

Ответы [ 12 ]

0 голосов
/ 26 августа 2008

То, что вы ищете, это ObsoleteAttribute класс:

using System;

public sealed class App {
   static void Main() {      
      // The line below causes the compiler to issue a warning:
      // 'App.SomeDeprecatedMethod()' is obsolete: 'Do not call this method.'
      SomeDeprecatedMethod();
   }

   // The method below is marked with the ObsoleteAttribute. 
   // Any code that attempts to call this method will get a warning.
   [Obsolete("Do not call this method.")]
   private static void SomeDeprecatedMethod() { }
}
0 голосов
/ 26 августа 2008

ObsoleteAttribute, вероятно, сработает в вашей ситуации - вы даже можете вызвать сбой сборки, если этот метод используется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...