Может ли кто-нибудь сказать мне, что случилось с моим кодом IL здесь?DynamicMethod NullReferenceException
IL_0000: nop
IL_0001: ldarg.1
IL_0002: isinst MyXmlWriter
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: ldarg.2
IL_000a: ldind.ref
IL_000b: unbox.any TestEnum
IL_0010: ldfld Int64 value__/FastSerializer.TestEnum
IL_0015: callvirt Void WriteValue(Int64)/System.Xml.XmlWriter
IL_001a: nop
IL_001b: ret
я схожу с ума здесь, так как я написал тест приложение, которое делает то же самое, что и выше, но в C#, и в рефлекторе код IL из который выглядит так же, как IL код моего DynamicMethod превыше (за исключением моего тестового приложения C# с помощью TestStruct с открытым полем вместо поля частного значения в перечислении выше, но у меня есть значение skipVisibility для true) ...
Я получаю исключение NullReferenceException. подпись
Мои DynamicMethod является:
public delegate void DynamicWrite(IMyXmlWriter writer, ref object value, MyContract contract);
сгенерировать метод так:
List<Type> parameterTypes = new List<Type> {
typeof(DMBuilder),
typeof(IDynamicSerializationWriter),
typeof(object).MakeByRefType(),
typeof(MyContract)
};
DynamicMethod dm = new DynamicMethod(string.Format(
"Write_{0}",
contract.TypeName),
typeof(void),
parameterTypes.ToArray(),
typeof(DMBuilder),
true
);
var d = dm.CreateDelegate(typeof(DynamicWrite), this);
d(x,y);
И я определенно не проходит ни в чем нуль.
Заранее благодарен!
Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- она) – Nasreddine