読者です 読者をやめる 読者になる 読者になる

部分クラス使って、追加したメソッドを起動時に呼びだす。

部分クラスを書いて機能追加したり、外したりできるようにしてみた。
スケルトンプログラムは以下

  • 実装方法

属性(Attribute)をメソッドにつけて、
クラスのメソッドをリフレクション使って限定して呼び出すようにする。
以下、細かいソース

  • 変更不要のソース
/// <summary>
/// program.cs
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        new Test();
    }
}

/// <summary>
/// カスタム属性クラス、ここではコンストラクタで読み込むメソッドに付ける
/// </summary>
class ReadyAttribute : Attribute
{}

/// <summary>
/// 部分クラス
/// </summary>
partial class Test
{

    public Test()
    {
        var method = typeof(Test).GetMethods();
        method.Where(p => p.GetCustomAttributes(typeof(ReadyAttribute), false).Any())
                .ToList()
                .ForEach(p => p.Invoke(this, null));
    }

    [Ready]
    public void Hoge()
    {
        Console.WriteLine("Hoge");
    }
}
  • 追加して書くプログラム例

A.cs

/// <summary>
/// 機能追加部分クラス
/// </summary>
partial class Test
{
    [Ready]
    public void A()
    {
        Console.WriteLine("A");
    }
}
  • 実行結果
Hoge
A