导入并运行利用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 =]
}
任何指向正确方向的建议都非常感谢!
提前感谢!
属性的构造函数只有在查询时才会被激活。在这里查看有关此主题的更多信息:when-is-a-custom-attributes-constructor-run
注:对任何活动操作使用属性都是不正确的。它应该仅用于声明目的。