众所周知使用如下格式:[ComVisble(true)]
class MyClass
{
}就自动实现了IDispatch但是我想要实现自己的IDispatch
比如:class MyClass::IDispatch
{
int IDispatch.Invoke(...)
{
}
.....
}IDispatch的定义如下:
[Guid("00020400-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDispatch
{
[PreserveSig]
int GetTypeInfoCount(out int Count);
[PreserveSig]
int GetTypeInfo([MarshalAs(UnmanagedType.U4)] int iTInfo,
[MarshalAs(UnmanagedType.U4)] int lcid, out
System.Runtime.InteropServices.ComTypes.ITypeInfo typeInfo);
[PreserveSig]
int GetIDsOfNames(ref Guid riid,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]
string[] rgsNames, int cNames, int lcid, [MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
[PreserveSig]
int Invoke(int dispIdMember, ref Guid riid, uint lcid, ushort wFlags,
ref System.Runtime.InteropServices.ComTypes.DISPPARAMS pDispParams, out object pVarResult, ref
System.Runtime.InteropServices.ComTypes.EXCEPINFO
pExcepInfo, IntPtr[] pArgErr);
}
编译没有错误,但是运行后,系统说这个对象不是一个IDispatch.对象
请问各位怎么办?
我迫切的需要自己实现Invoke.
class MyClass
{
}就自动实现了IDispatch但是我想要实现自己的IDispatch
比如:class MyClass::IDispatch
{
int IDispatch.Invoke(...)
{
}
.....
}IDispatch的定义如下:
[Guid("00020400-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDispatch
{
[PreserveSig]
int GetTypeInfoCount(out int Count);
[PreserveSig]
int GetTypeInfo([MarshalAs(UnmanagedType.U4)] int iTInfo,
[MarshalAs(UnmanagedType.U4)] int lcid, out
System.Runtime.InteropServices.ComTypes.ITypeInfo typeInfo);
[PreserveSig]
int GetIDsOfNames(ref Guid riid,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]
string[] rgsNames, int cNames, int lcid, [MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
[PreserveSig]
int Invoke(int dispIdMember, ref Guid riid, uint lcid, ushort wFlags,
ref System.Runtime.InteropServices.ComTypes.DISPPARAMS pDispParams, out object pVarResult, ref
System.Runtime.InteropServices.ComTypes.EXCEPINFO
pExcepInfo, IntPtr[] pArgErr);
}
编译没有错误,但是运行后,系统说这个对象不是一个IDispatch.对象
请问各位怎么办?
我迫切的需要自己实现Invoke.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货