12月6日添加说明:
经过反编译TypeName方法,发现其核心实现为:
UnsafeNativeMethods.ITypeInfo pTypeInfo = null;
string pBstrName = null;
string pBstrDocString = null;
string pBstrHelpFile = null;
UnsafeNativeMethods.IDispatch dispatch = VarName as UnsafeNativeMethods.IDispatch;
if (((dispatch != null) && (dispatch.GetTypeInfo(0, 0x409, out pTypeInfo) >= 0)) && (pTypeInfo.GetDocumentation(-1, out pBstrName, out pBstrDocString, out num, out pBstrHelpFile) >= 0))
{
str5 = pBstrName;
}
和猜想的一致,它确实是通过IDispatch接口来完成的(呵呵,貌似也只有这一种方式)