Re[89]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 11.10.15 19:38
Оценка:
Здравствуйте, Serginio1, Вы писали:

_>>Аааа, так оно ещё и через COM это делается... ) Тогда уж точно никакой разницы с другими языками нет, причём уже прямо сейчас. Т.е. банально реализуем соответствующий COM интерфейс и без проблем используем его в 1C. Не знаю правда зачем, но делается это тривиально. )))

S> Тебе нужно делать обертку Idispatch над объектом, типом. В Net это делается через Reflection к любому типу, объекту
S>Раз это элементарно забацайка. В той статье класс оборачивает любой объект, тип. Поддержка энумераторов.
S>Давай прямо сейчас.
S> Это еще раз подтверждение того, что ты невнимательно читаешь ссылки

S>Что было понятно то основной метод такой обертки для вызова свойства метода реального объекта.


Вот конкретный пример, правда там обвёртка к Python, а не IDispatch, но тем не менее:
struct World
{
    void set(std::string msg) { this->msg = msg; }
    std::string greet() { return msg; }
    std::string msg;
    // ...
}
// указываем те методы которые хотим экспортировать:
BOOST_PYTHON_MODULE(hello)
{
    class_<World>("World")
        .def("greet", &World::greet)
        .def("set", &World::set)
    ;
}
// можно сократить до вот такого варианта:
PYTHON_CLASS_SIMPLIFIED
(
    hello,
    World,
    greet, set
)
Использование:
>>> import hello
>>> planet = hello.World()
>>> planet.set('howdy')
>>> planet.greet()
'howdy'

Помимо этого есть автоматические генераторы клея между языками типа SWIG — там даже ничего перечислять не нужно.
Отредактировано 11.10.2015 19:41 Evgeny.Panasyuk . Предыдущая версия . Еще …
Отредактировано 11.10.2015 19:40 Evgeny.Panasyuk . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.