我试图在IL发射中创建一个setter,但是这个setter只能接受我的"数组中的字符串"如果没有,它必须抛出异常。我在使用checkIfAccept方法读取数组时遇到问题,我确定我错过了将数组指针存储在某个arg中的指令,但我不知道是哪一个。 在此先感谢,并为noob问题感到抱歉。
class Accept
{
public void CreateIL(ILGenerator il, FieldBuilder field, string [] array)
{
il.Emit(?);
il.Emit(OpCodes.Ldarg_1); // Push "value" on the stack
il.Emit(OpCodes.Ldarg_2); // suposed to push my array
il.Emit(OpCodes.Call, typeof(Accept).GetMethod("checkIfAccept"));
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Stfld, field); // Set the field "_Name" to "value"
il.Emit(OpCodes.Ret);
}
public void checkIfAccept(string obj, string [] array)
{
foreach(string str in array)
if (str != obj) throw new MyException();
}
}