.Net -> Delphi = property readonly ????
От: system_builder Россия  
Дата: 11.12.11 13:13
Оценка:
Подскажите ламеру в Com

Подскажите ламеру в Com

Извиняюсь, что задаю вопрос здесь. Тема — на стыке Delphi и C#, и при это я ни фига не знаю Com.

Создаю простой класс на C# — MyClass, с public методами и полями, ни от чего не наследованный. Все не нужное снаружи в этом классе делаю не public.

public MyClass : IMyClass
{
...
}

Ставлю в свойствах .Net проекта галку Make com visible и при сборке .Net автоматически создает для него интерфейс и MyClass.tlb.
В Delphi я делаю Inport Type Library выбирая сгенерированный tlb, который создает MyClass_tlb.pas и в нем много чего разного, в том числе класс TMyClass и интерфейс _MyClass.
Ну допустим тут все нормально, могу создать объект вызовом
CreateComObject(CLASS_MyClass) as _MyClass;
и использовать его.
Или использовать класс TMyClass.
Но вот беда — вот этот Delphi генератор все property делает readonly. В программе на Delphi приходится использовать методы Set_... сгенерированные этим генератором, например: Set_Property1(string Value).

Как сделать так, чтобы Delphi генератор делал property не readonly?
Может в C# коде надо какие-то атрибуты поставить для полей класса MyClass?

Я подумал, допустим я явно объявлю интерфейс IMyClass и скажу компилятору C# не создавать интерфейс автоматически. И размечтался, что это мне поможет.
Но не тут то было, стало еще хуже ))))

Класс MyClass объявляю так:

interface IMyClass
{
...
}

[ClassInterface(ClassInterfaceType.None)]
private MyClass : IMyClass
{
...
}

Тогда генератор Delphi создает только пустой интерфейс IMyClass, и в нем нет вообще ни одного метода ни одного property.

Как сделать так, чтобы генератор создавал весь интерфейс, и чтобы property получались не readonly.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.