Я рассматриваю попытку написать COM-объект с использованием C#, который реализует объект службы OPOS. Я сделал это на C++, используя Automation и MFC, и это было не слишком сложно. Поэтому я застрял на одном из методов, пытающихся преобразовать его. Я исключу другие методы в интерфейсе, так как они прямолинейны (или я надеюсь).как положить IDispatch * в управляемый код
[id(6), helpstring("method OpenService")]
LONG OpenService(BSTR lpclDevClass, BSTR lpclDevName, IDispatch* lpDispatch);
Мой код C# выглядит примерно так, но я застрял на OpenService.
[ComVisible(true)]
[Guid("76F8309C-3837-4065-960F-BE156383896D")]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class IErtMSR
{
[DispId(1)]
int COFreezeEvents([MarshalAs(UnmanagedType.VariantBool)] bool Freeze);
[DispId(2)]
int GetPropertyNumber([In] int lPropIndex);
[DispId(3)]
void SetPropertyNumber([In] int lPropIndex, [In] int nNewValue);
[DispId(4), MarshalAs(UnmanagedType.BStr)]
string GetPropertyString([In] int lPropIndex);
[DispId(5)]
void SetPropertyString([In, MarshalAs(UnmanagedType.BStr)] string StringData);
[DispId(6)]
int OpenService([In, MarshalAs(UnmanagedType.BStr)] string lpclDevClass, [In, MarshalAs(UnmanagedType.BStr)] string lpclDevName, IDispatch* lpDispatch);
//...the rest of the 24 methods.
}
как вы можете видеть Я не знаю, что положить на IDispatch *. Что я могу использовать в этом случае?
Я понял. Мне пришлось создать метод IDispatch (который я обнаружил, что у Hans Persant был доступный ...) Теперь мне просто нужно выяснить, как вызвать из него событие .. :) –