【问题标题】:C# - show Obsolete warnings in winform and have timestamp?C# - 在winform中显示过时的警告并有时间戳?
【发布时间】:2013-07-01 12:00:26
【问题描述】:

我想知道在将方法标记为过时时是否可以应用日期?我所说的日期是指这个日期代表应该永久删除这个功能的“日期”。

还有一个 NooB 问题,有没有办法使用 MessageBox.show() 在 winform 中显示错误/警告消息?
这意味着当在这个:

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

有什么方法可以调用ObsoleteAttribute的Message函数吗?

代码

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();
        }
    }
}

【问题讨论】:

  • ...您能否提供一些背景信息,为什么您想要这些东西? Obsolete 属性的主要用途是在编译时引起警告/错误。
  • 在消息中输入日期。并且不确定“调用 ObsoleteAttribute 的消息功能”是什么意思。你能详细说明一下吗?
  • 您可以编写自己的属性,将其称为 NewObsoleteAttribute,例如抛出异常 ObsoleteException,捕获它(可以设为泛型)并显示消息
  • 只是为了测试,没有更重要的,如果它只是为了编译,那没关系:)

标签: c# windows visual-studio-2010 computer-science


【解决方案1】:

为您的过时日期设定一个日期不是一个好主意。总有一些事情会耽误事情。另外,您可能希望在删除之前检查过时元素的使用情况。也许有些人忽略了你的警告。也许每个人都做过。你真的想破解他们所有的代码,就因为日历上的一天到了?

因此,由于这不是一个好主意,因此不支持。当然,您可以在过时警告文本中写下日期。

回答您的第二个问题,这是如何在运行时访问过时警告文本,以便您可以将其显示为消息框。

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

请注意,这实际上是对过时概念的滥用。过时意味着程序员警告,而不是最终用户警告。最终用户并不关心正在运行的代码有多过时或过时,他只希望他的程序能够工作。确保这种情况发生是程序员的职责。因此,程序员在编译时会收到警告消息。用户不应该为此烦恼。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2013-02-15
    • 2021-01-31
    • 2016-06-15
    • 1970-01-01
    • 2017-04-21
    • 2017-07-19
    • 2022-01-02
    相关资源
    最近更新 更多