Используйте вместо этого getApplicationContext()
.
В общем, интерфейс C ++ IDispatch - это просто таблица указателей на функции. В C это будет выглядеть примерно так:
typedef struct {
HRESULT(*pQueryInterface)(void* this, REFIID riid, void **ppvObject);
ULONG(*pAddRef)(void* this);
ULONG(*pRelease)(void* this);
HRESULT(*pGetTypeInfoCount)(void* this, unsigned int* pctInfo);
HRESULT(*pGetTypeInfo)(void* this, unsigned int iTInfo,LCID lcid, ITypeInfo** ppTInfo);
HRESULT(*pGetIDsOfNames)(void* this, REFIID riid, OLECHAR** rgszNames, unsigned int cNames, LCID lcid, DISPID* rgDispId);
HRESULT(*pInvoke)(void* this, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, unsigned int* puArgErr);
} IDispatch_in_C;
Обратите внимание, что каждый метод имеет указатель THIS в качестве первого параметра, и что вам нужно будет определить другие типы, такие как ITypeInfo, REFIID, DISPID и т. Д. И т. Д.
Итак, это большая задача. Но можно создавать интерфейсы C ++ на чистом C.
например, если вы нанимаете нового разработчика, гораздо проще сказать, мы используем эту структуру и передаем им ссылки на учебные пособия / справочное руководство. В то же время эти фреймворки опробуются и тестируются большим сообществом / компаниями.Сообщите мне, если какой-либо из ваших вопросов останется без ответа после прочтения статьи и приведенных выше ответов, и я сделаю все возможное, чтобы оказать дальнейшую помощь.
У Мартина Фаулера есть хорошая статья здесь о значении инверсии управления и внедрения зависимостей.
Использование AOP в Spring.NET подробно описано здесь . Я больше знаком с версией Spring на основе Java, поэтому я не могу с абсолютной уверенностью сказать, что Spring.NET в настоящее время поддерживает только AOP на основе прокси.
То есть класс, который должен быть уведомлен, должен реализовывать интерфейс. Spring создаст динамический прокси, реализующий этот интерфейс и делегирующий исходный целевой экземпляр.
Хотя в нем говорится:
В будущей версии мы будем реализовывать прокси с использованием наследования, что позволит вам прокси-классы без интерфейсов как хорошо и удалит некоторые из оставшихся проблем с исходными ссылками, которые не могут быть решены с помощью прокси на основе композиции.