public NativeSignature GetNativeSignature(Guid id, bool ansiPlatform, bool platform64bit) { MethodInfo info; if (methodMap.TryGetValue(id, out info)) { // requesting signature for a method if (NativeSignature.IsPInvoke(info)) { return(NativeSignature.FromPInvokeSignature(info, ansiPlatform, platform64bit)); } else { Debug.Assert(NativeSignature.IsRCWMethod(info)); return(NativeSignature.FromComInteropSignature(info, ansiPlatform, platform64bit)); } } else { // requesting signature for a delegate Type type = typeMap[id]; Debug.Assert(typeof(Delegate).IsAssignableFrom(type)); return(NativeSignature.FromDelegateType(type, ansiPlatform, platform64bit)); } }
private static void GenerateDelegate(Type delegateType) { Debug.WriteLine(delegateType.FullName); NativeSignature native_sig = NativeSignature.FromDelegateType( delegateType, options.TargetPlatformAnsi, options.TargetPlatform64Bit); PrintNativeSignature(native_sig); }
protected override void Initialize(TypeDefKey key) { Debug.Assert(typeof(Delegate).IsAssignableFrom(key.Type)); base.Initialize(key); // create the native signature of the delegate signature = NativeSignature.FromDelegateType( key.Type, (key.Flags & MarshalFlags.AnsiPlatform) == MarshalFlags.AnsiPlatform, platform64bit); name = signature.Name; }