Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        private static void GenerateDelegate(Type delegateType)
        {
            Debug.WriteLine(delegateType.FullName);

            NativeSignature native_sig = NativeSignature.FromDelegateType(
                delegateType,
                options.TargetPlatformAnsi,
                options.TargetPlatform64Bit);

            PrintNativeSignature(native_sig);
        }
Ejemplo n.º 3
0
        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;
        }