簡単な観察です。このプロパティMethodBase.IsConstructor
はstatic
コンストラクターでは機能せず、ドキュメントではこの事実について言及されていません (引用: 「このメソッドがオブジェクトによって表されるコンストラクターである場合はtrueConstructorInfo
」)。
サンプル:
static class Program
{
static void Main()
{
ConstructorInfo ci = typeof(Test).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Static, null, new Type[] { }, null);
Console.WriteLine(ci is ConstructorInfo); // silly; writes True
Console.WriteLine(ci.IsConstructor); // ?? writes False
}
}
static class Test
{
static Test()
{
Console.WriteLine("I am your static constructor");
}
}
質問: なぜですか? バグまたは不完全な仕様?