【发布时间】:2014-02-22 04:01:08
【问题描述】:
当我用这样的自定义 Attribute 装饰我的 Main 方法时,我遇到了一件奇怪的事情:
class Program
{
[Attr]
static void Main(string[] args)
{
Console.WriteLine("Main end..");
Console.Read();
}
}
class AttrAttribute : Attribute
{
public AttrAttribute()
{
Console.WriteLine("Hello world!");
}
}
然后控制台程序不打印任何东西。但是当我调试程序时,我发现属性 AttrAttribute 的构造函数和 Main 方法都确实执行了。谁能告诉我为什么..
如果我评论 'Console.WriteLine("Hello world!");'在AttrAttribute的构造函数中,程序打印“Main end..”..
谢谢大家。 (对不起,我的泳池英语。)
【问题讨论】:
-
我只是运行了相同的代码,基本上
AttrAttribute构造函数在控制台存在之前就已经运行了。我的猜测是控制台将不存在,直到控制台应用程序的入口点Main开始执行。你想用你的属性来完成什么,为什么它会打印到控制台? -
托管进程正在探测 STA/MTAThread 属性。项目+属性,调试选项卡,取消勾选该选项,它将停止。
-
谢谢您,AdamVenezia、Dexters、Hans Passant。 @Dexters 提供的链接非常有用。
标签: c# attributes