Re: C#-овский COM-объект для C#-клиента
От: SCS  
Дата: 04.11.02 07:33
Оценка: 12 (2)
Здравствуйте Аноним, Вы писали:

А>самые ужасы с C# ==> C#

А>если создавать объект через
А>Type.GetTypeFromCLSID(clsid, machine, ...) и Activator.CreateInstance, то объект работает
А>но если объект возвращает ссылку на интерфейс(в терминах COM)...

Вот в эту ловушку ты и попался. Сервер считает всех клиентов COM-ми и клиенты считают, что сервер — это COM. А когда между Net компонетами стоит аж 2 wrapper'а ...

А>может кто подскажет

А>как заюзать C#-овский COM-объект из C#-овского клиента,
А> чтобы и эвенты работали и объекты можно было возвращать и эти объекты выполнялись бы на машине и в процессе сервера

Если делать клиента по технологии, предлагаемой MS, то необходимо создать RCW для COM объекта (надо забыть о реализации сервера, для клиентов это COM). А вот здесь есть камень — TLB, построенная Regsvcs.exe, не может быть использована для этих целей: CLR->TLB->CLR эта цепочка не поддерживается ни TypeLibConverter ни tlbimp.exe (интересно, почему — кнут и пряник ?), использование assembly сервера — здесь компилятор предполагает нормальный remouting, а то и просто создает объекты в процессе клиента — полная dll то под рукой.
Один из выходов — написать для клиента класс сервера, в котором оставить только объявления методов, интерфейсов, и пр. — как то криво.

А>PS кстати, чтобы заюзать эвенты для дельфовых и сппшных клиентов надо содавать два вида интерфейсов

А>дельфовые юзают по диспиду, а сппшные — из ВТБЛа
Вот и получается, чтобы заюзать C# клиентов надо создавать нормальный remouting.
SCS
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.