У меня есть DLL, которая используется сторонним приложением.Я пытаюсь запустить долго выполняющуюся задачу как асинхронную, которая не работает из-за ошибки: -
"Невозможно привести объект COM типа" System .__ ComObject "к типу интерфейса" IMSRelation.IJAssocRelation ".Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{609567C0-4ED3-11D1-B2B9-080036024603}' не выполнен из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)). "
Код ошибки: -
businessObject.Relationships
, где businessObject имеет тип BusinessObject, код для которого
public class BusinessObject
{
protected internal BusinessObject();
protected internal BusinessObject(PrivateBusinessObject oBOP);
public ReadOnlyCollection<RelationCollection> Relationships { get; }
}
Примечание: - Это прекрасно работает, если я не использую его внутри (Async / Await или внутри нового потока) других процессов. До сих пор я смотрел на то, что компоненты COM необходимо маршалировать перед их использованием внутри.NET Framework.
Так может кто-нибудь подсказать, как его маршалировать, поскольку BusinessObject Class не реализует какой-либо интерфейс [Согласно моему пониманию, маршалировать могут только интерфейсы, поправьте меня, если я ошибаюсь].
Теперь очевидноBusinessObject - это Root Element, и другие классы реализуют его, и эти классы реализуют интерфейсы, из которых осуществляется доступ к Relationships.
Итак, мне нужно получить тот конкретный интерфейс, из которого мне нужно найти отношение, и его маршалировать ??Пожалуйста, предложите решение.