diff options
author | Jeroen Frijters <jeroen@frijters.net> | 2015-04-07 14:57:13 +0300 |
---|---|---|
committer | Jeroen Frijters <jeroen@frijters.net> | 2015-04-07 14:57:13 +0300 |
commit | 7cdbd3a6704439243cbf7baead14a129b25e2113 (patch) | |
tree | 5ecee42b5d7704c0e35ba9784aa243af3891280f | |
parent | 8093e6b7fd791b3e1dbe69ece5dbeb2fa0bbd4c6 (diff) |
Added pinvokeimpl decoding for fields.
-rw-r--r-- | Disassembler.cs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Disassembler.cs b/Disassembler.cs index b7e5c1a..c88704c 100644 --- a/Disassembler.cs +++ b/Disassembler.cs @@ -1476,20 +1476,19 @@ namespace Ildasm ; } - void WritePInvokeImpl(LineWriter lw, MethodBase method) + void WritePInvokeImpl(LineWriter lw, MemberInfo member) { lw.Write("pinvokeimpl("); - MethodInfo mi = method as MethodInfo; ImplMapFlags flags; string importName; string importScope; - if (mi != null && mi.__TryGetImplMap(out flags, out importName, out importScope)) + if (member.Module.__TryGetImplMap(member.MetadataToken, out flags, out importName, out importScope)) { if (importScope != null) { lw.Write("\"{0}\"", EscapePInvoke(importScope)); } - if (importName != null && importName != method.Name) + if (importName != null && importName != member.Name) { lw.Write(" as \"{0}\"", EscapePInvoke(importName)); } @@ -1954,6 +1953,10 @@ namespace Ildasm { lw.Write("notserialized "); } + if ((field.Attributes & FieldAttributes.PinvokeImpl) != 0) + { + WritePInvokeImpl(lw, field); + } if ((field.Attributes & FieldAttributes.HasFieldMarshal) != 0) { FieldMarshal marshal; |