gpt4 book ai didi

c# - 我可以在不使用 FieldInfo 的情况下使用 OpCodes.Ldsfld 吗?

转载 作者:行者123 更新时间:2023-11-30 23:28:09 25 4
gpt4 key购买 nike

我想避免使用 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);
}
}
}

最佳答案

不,你不能,the documentation for OpCodes.Ldsfld说:

The following Emit method overload can use the ldsfld opcode:

  • ILGenerator.Emit(OpCode, FieldInfo)

如果知道字段名称,要获取 FieldInfo,则需要使用反射。

关于c# - 我可以在不使用 FieldInfo 的情况下使用 OpCodes.Ldsfld 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com