Сообщение Re[89]: Java vs C# vs C++ от 11.10.2015 19:38
Изменено 11.10.2015 19:40 Evgeny.Panasyuk
Здравствуйте, Serginio1, Вы писали:
_>>Аааа, так оно ещё и через COM это делается... ) Тогда уж точно никакой разницы с другими языками нет, причём уже прямо сейчас. Т.е. банально реализуем соответствующий COM интерфейс и без проблем используем его в 1C. Не знаю правда зачем, но делается это тривиально. )))
S> Тебе нужно делать обертку Idispatch над объектом, типом. В Net это делается через Reflection к любому типу, объекту
S>Раз это элементарно забацайка. В той статье класс оборачивает любой объект, тип. Поддержка энумераторов.
S>Давай прямо сейчас.
S> Это еще раз подтверждение того, что ты невнимательно читаешь ссылки
S>Что было понятно то основной метод такой обертки для вызова свойства метода реального объекта.
Вот конкретный пример, правда там обвёртка к Python, а не IDispatch, но тем не менее:
Помимо этого есть автоматические генераторы клея между языками типа SWIG — там даже методы перечислять не нужно.
_>>Аааа, так оно ещё и через 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_MODULE_SIMPLIFIED
(
hello,
World,
greet, set
)
Использование:>>> import hello
>>> planet = hello.World()
>>> planet.set('howdy')
>>> planet.greet()
'howdy'
Помимо этого есть автоматические генераторы клея между языками типа SWIG — там даже методы перечислять не нужно.
Здравствуйте, Serginio1, Вы писали:
_>>Аааа, так оно ещё и через COM это делается... ) Тогда уж точно никакой разницы с другими языками нет, причём уже прямо сейчас. Т.е. банально реализуем соответствующий COM интерфейс и без проблем используем его в 1C. Не знаю правда зачем, но делается это тривиально. )))
S> Тебе нужно делать обертку Idispatch над объектом, типом. В Net это делается через Reflection к любому типу, объекту
S>Раз это элементарно забацайка. В той статье класс оборачивает любой объект, тип. Поддержка энумераторов.
S>Давай прямо сейчас.
S> Это еще раз подтверждение того, что ты невнимательно читаешь ссылки
S>Что было понятно то основной метод такой обертки для вызова свойства метода реального объекта.
Вот конкретный пример, правда там обвёртка к Python, а не IDispatch, но тем не менее:
Помимо этого есть автоматические генераторы клея между языками типа SWIG — там даже ничего перечислять не нужно.
_>>Аааа, так оно ещё и через 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_MODULE_SIMPLIFIED
(
hello,
World,
greet, set
)
Использование:>>> import hello
>>> planet = hello.World()
>>> planet.set('howdy')
>>> planet.greet()
'howdy'
Помимо этого есть автоматические генераторы клея между языками типа SWIG — там даже ничего перечислять не нужно.