Tag: 入口点

在调用程序集中的任何方法之前,CLR调用的最早入口点是什么?

在过去的几年里,我偶尔会想知道.NET世界中有哪些(in)着名的DLL_PROCESS_ATTACH可用。 我所说的任何文档,略微简化,类的最早入口点是静态构造函数(cctor),但是你不能影响它何时被调用 ,也不能定义一个保证在任何其他cctor之前被调用的cctor。或字段初始化程序,黑客,如果从未使用过类,它甚至可能根本不会被调用。 因此,如果您想要在调用程序集的任何方法之前保证已初始化某些内容,并且您不希望为程序集中的每个类添加一个cctor,您可以采取什么方法? 或者,这些年来我是否有一个简单易用的托管解决方案?

使用基类中的static void Main()方法作为程序的入口点

我想将一些程序逻辑抽象到基类来执行命令行程序(function类似于这个问题所要求的function )。 换句话说,这样的事情: public abstract class BaseProgram { public static void Main(string[] args) { Console.WriteLine(typeof(T)); } } public class Program : BaseProgram { } 重要的是要注意BaseProgram在不同的程序集中。 但是,这不起作用。 static void Main(string[] args)方法必须位于派生类中。 谁能解释为什么会这样? 毕竟,以下是完全“合法的”: Program.Main(null); BaseProgram.Main(null); 并将输出: > System.String > System.String 我想知道的是 :这个结果是否有任何记录的原因?

我需要一个永远不会返回null的`Assembly.GetEntryAssembly()`的替代品

我需要找到托管代码执行开始的程序集。 // using System.Reflection; Assembly entryAssembly = Assembly.GetEntryAssembly(); 这似乎是要走的路,但Assembly.GetEntryAssembly的MSDN参考页指出此方法“[c]从非托管代码调用时返回null。” 在这种情况下,我想知道哪个程序集是由非托管代码调用的。 有没有一种可靠的方法,即总是返回非空的Assembly引用?

“不包含适用于入口点的静态’主’方法”

我无法想象下面我的代码有什么问题。 当我尝试编译时,我收到消息: 不包含适用于入口点的静态“主”方法。 这是我的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace RandomNumberGenerator { public partial class Form1 : Form { private const int rangeNumberMin = 1; private const int rangeNumberMax = 3; private int randomNumber; public Form1() { randomNumber = GenerateNumber(rangeNumberMin, rangeNumberMax); } private int […]