2

GetType と GetField の使用を避けたい。Ldsfld で文字列を使用できますか? 以下に、達成しようとしていることのモックアップを含めました。ご覧のとおり、私は IL Generation を初めて使用します。アプリケーションでのリフレクションのコストの一部を取り除こうとしています。

using System;
using System.Reflection.Emit;

namespace ConsoleApplication10
{
    static class Program
    {
        public static string TextBox1 = "Hello World!";

        static void Main(string[] args)
        {
            var dm = new DynamicMethod("My_method",
                typeof(string), null, true);

            var il = dm.GetILGenerator();
            il.Emit(OpCodes.Ldsfld, "string ConsoleApplication10.Program::TextBox1");
            il.Emit(OpCodes.Ret);
            var func = (Func<string>)dm.CreateDelegate(typeof(Func<string>));
            var s = func();

            Console.WriteLine(s);
        }
    }
}
4

1 に答える 1