Я подключаюсь к какой-то программе через COM и получаю System .__ ComObject. Я знаю несколько его методов, поэтому могу сделать вот так:
object result = obj.GetType().InvokeMember("SomeMethod", BindingFlags.InvokeMethod, null, obj, new object[] { "Some string" });
и так
dynamic dyn = obj;
dyn.SomeMethod("Some string");
Оба метода работают нормально.Но как я могу определить информацию о внутреннем типе объекта com и перечислить все его члены?
I попробовал это:
[ComImport, Guid("00020400-0000-0000-C000-000000000046"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDispatch
{
void Reserved();
[PreserveSig]
int GetTypeInfo(uint nInfo, int lcid, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(TypeToTypeInfoMarshaler))] out System.Type typeInfo);
}
...
IDispatch disp = (IDispatch)obj;
Type t;
disp.GetTypeInfo(0, 0, out t);
Но t в конце равно нулю. Кто-нибудь может мне помочь?