GetType ve GetField'ı kullanmaktan kaçınmak istiyorum. Ldsfld ile bir string kullanabilir miyim? Aşağıda gerçekleştirmeye çalıştığım şeyin bir modelini ekledim. Gördüğünüz gibi ben IL Generation için yeniyim - Uygulamamdaki yansıma maliyetinin bir kısmını gidermeye çalışıyorum.FieldInfo kullanmadan OpCodes.Ldsfld kullanabilir miyim?
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);
}
}
}
IL'yi doğru şekilde oluşturmak için yansımayı kullanmalısınız. Buradaki nokta, bir kere bunu yapabilmeniz, DynamicMethod'un herhangi bir sayıyı kullanabilmeniz ve * yansımayı kullanmamanız. –
Teşekkürler. Uygulamamda birçok kez başlatılan bir çocuk sürecim var ve her süreçte yansıma maliyetine katlanıyorum. Yansıma kullanımımı kaldırmanın/optimize etmenin diğer yollarını araştıracağım. – metafood
Bu, aşırı derecede az anlam ifade eder, bir sürecin başlaması, yansımadan daha pahalı olan büyüklükteki emirdir. Mükemmel bir problemde tahmin etmeyin, yanlış tahmin edersiniz. –