Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Импорт интерфейсов из C# в Delphi   Найти похожие ветки 

 
Pit   (2012-03-01 14:56) [0]

Приветствую, камрады...

Есть маленькая трабла, опишу кратко. На C# (VS 2010) имеем такое определение:

public interface ICustomCar
   {
...

public interface ICar : ICustomCar
   {
...


Сам проект - DLL, компилим, получаем также TLB. Этот TLB через Type Library загружает в Delphi 7. Она генерирует .pas файл, и там такой фейл:

ICar = interface(IDispatch)

ну и соответственно

ICustomCar = interface(IDispatch)

Иерархия наследования пропала. Почему так могло произойти, куда копать? ((


 
tesseract ©   (2012-03-01 15:09) [1]

Не совсем понял - если у тебя диспетч, зачем тебе вообще tlb?


 
Pit   (2012-03-01 15:18) [2]

Dispatch медленно. И проверка только на этапе выполнения.

В общем, я хочу чтобы Delphi по TLB генерировал то, что описывалось в шарпе.


 
tesseract ©   (2012-03-01 16:03) [3]


> В общем, я хочу чтобы Delphi по TLB генерировал то, что
> описывалось в шарпе.


Используй IUnknown тогда, если шарп позволяет. Хотя насчет "медлительности" iDispatch я бы очень сильно поспорил.


 
Pit   (2012-03-01 16:09) [4]


> Используй IUnknown тогда

ты вообще о чем? Ты понял в чем корень проблемы?

Не какой базовый интерфейс использовать, а то что при экспорте интерфейса из C# в Delphi через tlb-файл теряется иерархия классов.

ICar является наследником ICustomCar. А в дельфи он оказывается наследником от IDispatch. Можно директивой сделать его наследником IUnknow, а что толку. Нужно, чтобы он был наследником от ICustomCar!


 
tesseract ©   (2012-03-01 16:18) [5]


> а то что при экспорте интерфейса из C# в Delphi через tlb-
> файл теряется иерархия классов.


AFAIK Com так и работает. Это же интерфейс, а не класс.


 
Pit   (2012-03-01 17:14) [6]

Как так, без наследования?

Неправда. Возьми Type Library и выдерни интерфейсы от... до хоть например вот от MS Access. Там явно видно, что куча интерфейсов наследуются от других. Так что я даже не дельфи виню.

Но и думать, что C# не умеет грамотно генерировать tlb - тоже не получается.

вот не понимаю где затык...


 
tesseract ©   (2012-03-01 17:22) [7]


> Но и думать, что C# не умеет грамотно генерировать tlb -
>  тоже не получается.


Посмотри tlb :-)


 
icelex ©   (2012-03-01 17:43) [8]

наследование для интерфейсов .net в com не поддерживается


 
Pit   (2012-03-01 18:19) [9]


> Посмотри tlb :-)

а как я его посмотрю? Там какой-то бинарный формат...


> наследование для интерфейсов .net в com не поддерживается

эээ... нифига себе новость... А по каким причинам это сделано?! Есть куча же COM-софта, который использует иерархию наследования... Тот же IE какой-нибудь.

Я не то, чтобы не верю... А есть ссылочка на какой-нибудь официоз, что именно так, не поддерживается наследование интерфейсов в .net?


 
icelex ©   (2012-03-01 18:58) [10]

ну, можно почитать про преобразование экспортированного типа в разделе справки, посвященном преобразованию сборки в библиотеку типов

> Есть куча же COM-софта, который использует иерархию наследования

можно почитать соседний раздел, где идет речь про преобразование типов в сборку, тогда и первое станет понятнее


 
tesseract ©   (2012-03-01 19:45) [11]


> Есть куча же COM-софта, который использует иерархию наследования.
> ..


Во первых .net работает c com через весьма кривой костыль. Если самому писать tlb - то скорее всего прокатит, но авто импорт/эксопрт у меня никогда не выдавал иерархию классов.


 
CRLF   (2012-03-01 19:47) [12]


> а как я его посмотрю? Там какой-то бинарный формат...
Делфи этот бинарный формат вполне себе открывает. Это кроме того, что она его ещё и импортировать умеет.


 
Pit   (2012-03-02 13:03) [13]


> Делфи этот бинарный формат вполне себе открывает

ух ты и правда...



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1336127281
__QWERTY
2012-05-04 14:28
2013.03.22
как правильно очистить TList ы, чтобы не было утечек памяти


15-1338277495
Scott Storch
2012-05-29 11:44
2013.03.22
отображение имени файла


2-1342633944
Nilman
2012-07-18 21:52
2013.03.22
Фон StringGrid вне ячеек


2-1342616239
Люда
2012-07-18 16:57
2013.03.22
Tab в onKeyDown, onKeyPress


15-1345546951
alexdn
2012-08-21 15:02
2013.03.22
Ещё маленький вопрос по пхп