diff --git a/Editor/ReversePInvokeWrap/Analyzer.cs b/Editor/ReversePInvokeWrap/Analyzer.cs index f3ef62a..891c1c6 100644 --- a/Editor/ReversePInvokeWrap/Analyzer.cs +++ b/Editor/ReversePInvokeWrap/Analyzer.cs @@ -93,7 +93,7 @@ namespace HybridCLR.Editor.ReversePInvokeWrap TypeDef delegateTypeDef; if (delegateTypeSig is ClassSig classSig) { - delegateTypeDef = classSig.TypeDef; + delegateTypeDef = classSig.TypeDefOrRef.ResolveTypeDefThrow(); } else if (delegateTypeSig is GenericInstSig genericInstSig) { @@ -101,12 +101,12 @@ namespace HybridCLR.Editor.ReversePInvokeWrap } else { - throw new NotSupportedException($"Unsupported delegate type {delegateTypeSig.GetType()}"); + delegateTypeDef = null; } if (delegateTypeDef == null) { - return CallingConvention.Winapi; + throw new NotSupportedException($"Unsupported delegate type {delegateTypeSig.GetType()}"); } var attr = delegateTypeDef.CustomAttributes.FirstOrDefault(ca => ca.AttributeType.FullName == "System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute"); if (attr == null)