C#のリフレクション

 まあ普通にそんなことが出来てなんになると思うかもしれないけれど、どんなワケワカラン概念も、それまで解決できなかった何かを解くために編み出された技法なのだろう。C#のリフレクション関係を調べていたら、Getterも使わないでインスタンスのプロパティを得ることができる方法があるようなので試してみた。

using System;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Data d = new Data("Secret");
            Type type = d.GetType();
            PropertyInfo prop = type.GetProperty("str");
            object value = prop.GetValue(d);
            Console.WriteLine(value);
        }
    }

    public class Data
    {
        public string str { get; set; } = String.Empty;
        
        public Data(String str)
        {
            this.str = str;
        }
    }
}

 リフレクションにはそのクラスのあらゆる情報が満載になっている。型を取ってプロパティを取って値を取ってこれるようである。