rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 9.0 - モジュールの初期化子

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

モジュールの初期化子

 https://docs.microsoft.com/ja-jp/dotnet/api/system.runtime.compilerservices.moduleinitializerattribute
 アセンブリ (.dll) が使われる際の初期化メソッドを実装できる。

namespace ClassLibrary
{
    public class Class1
    {
        public static string Saitama => "Saitama! Saitama!";
    }

    class Class2
    {
        // 初期化メソッド。アセンブリが使われる時に勝手に実行される
        [System.Runtime.CompilerServices.ModuleInitializer]
        internal static void Initialize1() => Console.WriteLine("Initialize1");

        // 初期化メソッド。複数作れる。全部実行される
        [System.Runtime.CompilerServices.ModuleInitializer]
        internal static void Initialize2() => Console.WriteLine("Initialize2");
    }
}