Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Импорт интерфейсов из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.09 c
15-1350390543
AV
2012-10-16 16:29
2013.03.22
Узнать свой пароль в текущей сессии oracle


2-1336713116
igorium
2012-05-11 09:11
2013.03.22
ShellTreeView и папка "Рабочий стол"


4-1255976428
minomorf
2009-10-19 22:20
2013.03.22
Как добавлять/удалять вкладки в SysTabControl32?


15-1344894739
Германн
2012-08-14 01:52
2013.03.22
OpenOffice


15-1341568317
AV
2012-07-06 13:51
2013.03.22
Шкаф-кровать. Идея :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский