导入并运行利用c#自定义属性的外部方法

本文关键字:自定义属性 外部 方法 运行 导入 | 更新日期: 2023-09-27 18:05:26

所以由于一个奇怪的性能问题,我们目前需要运行一个Windows窗体并强制它像控制台项目一样运行。这不是一个真正的问题,当第三部分研究性能问题时,它工作得很好。

当你这样做的时候,

Console.WriteLine("something") 

实际上不输出到控制台。

解决方案是添加以下内容(在一堆SO帖子中发现)

[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
private static extern bool AttachConsole(int processId);

然后在Main

中调用该方法
            AttachConsole(-1);

ok,这工作得很好,仍然需要看看这是否最终导致最初促使我们使用windows表单解决方案的相同性能问题待定。

由于我不想把这段代码复制到每个项目(boooo),我创建了一个自定义属性并将该代码添加到它。

public class FormOnConsol : Attribute
{
    [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
    public static extern bool AttachConsole(int processId);
    public FormOnConsol(int processid = -1)
    {
        AttachConsole(processid);
    }
}

似乎不明白为什么不工作,当使用像

    [STAThread]
    [FormOnConsol]
    static void Main()
    {
          //some fun code here
          //naturally because all code is fun =]
    }

任何指向正确方向的建议都非常感谢!

提前感谢!

导入并运行利用c#自定义属性的外部方法

属性的构造函数只有在查询时才会被激活。在这里查看有关此主题的更多信息:when-is-a-custom-attributes-constructor-run

注:对任何活动操作使用属性都是不正确的。它应该仅用于声明目的。