2013-07-01 2 views
0

Мне было интересно, есть ли способ применить дату при маркировке метода как устаревшего? Что я имею в виду о дате, так это то, что эта дата представляет собой «дату», когда эта функция должна быть удалена навсегда.C# - показать устаревшие предупреждения в winform и иметь временную метку?

И вопрос NooB, есть способ отображения сообщения об ошибке/предупреждении в winform с помощью MessageBox.show()?
Это означает, что, когда в этом:

[ObsoleteAttribute("This class is obsolete; use class B instead")] 

Есть ли способ, чтобы добраться до вызова функции сообщений о ObsoleteAttribute?

Код:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     [ObsoleteAttribute("This class is obsolete; use class B instead")] 
     class A 
     { 
      public void F() { } 
     } 
     class B 
     { 
      public void F() { } 

     } 



     private void button1_Click(object sender, EventArgs e) 
     { 
      A a = new A();  // Warning 
      a.F(); 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      B b = new B(); 
      b.F(); 
     } 
    } 
} 
+0

... не могли бы вы дать какой-то фон, почему вы хотели бы любой из этих вещей? Основное использование атрибута Obsolete является причиной возникновения ошибки/ошибки при компиляции. – sq33G

+0

Укажите дату в сообщении. И не знаю, что значит «вызвать функцию сообщения ObsoleteAttribute». Не могли бы вы уточнить? –

+0

Вы можете написать свой собственный атрибут, который называется NewObsoleteAttribute и, например, throw exception ObsoleteException, поймать его (можно сделать родовым) и показать сообщение – wudzik

ответ

1

Ввод даты на вашем устаревания не является хорошей идеей. Там всегда могут быть вещи, которые задерживают вещи. Кроме того, вы, вероятно, захотите проверить использование устаревшего элемента перед его удалением. Возможно, некоторые люди проигнорировали ваше предупреждение. Может, все и сделали. Вы действительно хотите сломать весь свой код, только потому, что наступил день в календаре?

Итак, поскольку это не очень хорошая идея, оно не поддерживается. Конечно, вы можете написать дату в своем предупреждающем тексте устаревания.

И, чтобы ответить на ваш второй вопрос, вы получите доступ к тексту предупреждения об устаревании во время выполнения, чтобы вы могли отображать его как окно сообщения.

ObsoleteAttribute attribute = typeof(A).GetCustomAttribute<ObsoleteAttribute>(); 
if (attribute != null) 
{ 
    MessageBox.Show(attribute.Message); 
} 

Следует помнить, что это действительно неправильное использование концепции устаревания. Устаревание подразумевается как предупреждение программиста, а не как предупреждение конечного пользователя. Конечный пользователь не заботится о том, как устарел или устарел исполняемый код, он просто хочет, чтобы его программа работала. Обязанности программистов - убедиться, что это происходит. Поэтому программист получает сообщение об ошибке во время компиляции. Пользователь не должен беспокоиться об этом.

Смежные вопросы