Как перечислить элементы COM-объекта в C #?

Я подключаюсь к какой-то программе через 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 в конце равно нулю. Кто-нибудь может мне помочь?

5
задан Alexander Kuzin 11 November 2010 в 22:20
поделиться