C# Получают проценуроз от COM-объекта

NUnit загружает модульные тесты в seperate AppDomain, и я предполагаю, что точку входа не называют (вероятно, не нужный), следовательно блок записи является пустым.

9
задан Andrey Rubshtein 20 February 2012 в 10:29
поделиться

1 ответ

Вы можете запросить IPersist и GetClassID на нем.

Это дает вам CLSID . Затем вызовите ProgIDFromCLSID :

Здесь находится объявление pinvoke.

Это дает вам ProgID.

EDIT:

Чтобы запросить интерфейс, просто выполните приведение на C #:

IPersist p = myObj as IPersist;
if (p != null)
{
    // phew, it worked...
}

За кулисами это то, что на самом деле происходит, как показано здесь на C ++:

IUnknown *pUnk = // ... get object from somewhere

IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
    // phew, it worked...
}

(Но в наши дни никто не утруждает себя написанием этого материала вручную, поскольку умный указатель может в значительной степени имитировать опыт C #.)

9
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: