dynamicなメソッド

dynamicってメソッドの戻り値にも指定できたんですね。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DynamicFuncSample
{
    class Program
    {
        public static dynamic Func(int n)
        {
            // 偶数ならint、奇数ならstringを返す
            if (n % 2 == 0)
                return 0;
            else
                return "0";
        }

        static void Main(string[] args)
        {
            // 同じメソッドを異なる型で受ける
            int x = Func(2);
            string y = Func(3);

            var mi = typeof(Program).GetMethod("Func");
            // 戻り値の方はObject
            Console.WriteLine(mi.ReturnType);
        }
    }
}

なんか、とても違和感があります・・・