任何人都可以告訴我這裏的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代碼看起來就像是我的DynamicMethod的的IL代碼上方(除了我的測試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-doi-i-fix-它) – Nasreddine