
Anatoly
21.08.2017
16:26:52

Nikita
21.08.2017
16:26:57
4) это вообще тупо удобно - на плюсах пишешь код и его используешь из дотнета как объекты

Friedrich
21.08.2017
16:26:57

Nikita
21.08.2017
16:27:08
а чего его завозить

Google

Friedrich
21.08.2017
16:27:12

Aikidos
21.08.2017
16:27:14
Люди, нужна помощь. Как можно сделать, чтобы в designer.cs была коллекция из полей другого статического класса?
К примеру:
this.testControl1.MyCollection.Add(MyStaticClass.Test);
Editor написал, но как сделать такую вот сериализацию хз.
Он сейчас просто создает элементы коллекции в этом же файле.

Nikita
21.08.2017
16:27:21
https://github.com/kekekeks/prowingen/blob/master/native/include/com.h#L40
вот тебе весь COM
который нужен для взаимодействия C#<->C++

Friedrich
21.08.2017
16:28:05
Погоди, нет, серьёзно? Ты написал свою реализацию COM?

Nikita
21.08.2017
16:28:09
дальше просто в плюсах наследуешь этот класс и реализуешь интерфейсы, базирующиеся на IUnknown
я в своё время реализацию COM-интерфейсов на PowerBASIC делал
в котором даже ООП нет

Friedrich
21.08.2017
16:28:51
https://cs9.pikabu.ru/post_img/2017/01/24/12/1485290767136647301.png

Nikita
21.08.2017
16:29:28
очевидно, да

Google

Friedrich
21.08.2017
16:29:38
Ну, блин, я вообще не представляю, как это всё будет работать

Nikita
21.08.2017
16:29:40
COM - это _очень_ простая технология

Friedrich
21.08.2017
16:29:50
Откуда я буду брать __ComObject?

Nikita
21.08.2017
16:29:54
которая изначально бинарно совместима с C++

Friedrich
21.08.2017
16:30:06
Обычно же его по гуиду или ProgID конструируют. Или из TLB.

Nikita
21.08.2017
16:30:14

Friedrich
21.08.2017
16:30:14
Откуда у меня всё это возьмётся в Mono?

Nikita
21.08.2017
16:30:19
примерно как в DirectX

Friedrich
21.08.2017
16:30:31
Не, погодь, там у тебя руками всё?

Nikita
21.08.2017
16:30:39
ну не через new же

Friedrich
21.08.2017
16:30:41
То есть я просто беру фабрику, создаю инстанс, а потом у него деру нативные методы?

Nikita
21.08.2017
16:30:49
откуда в Mono возьмётся OLE и ActiveX?

Friedrich
21.08.2017
16:31:00
Так вот и я у тебя спрашиваю.
Ну а касты будут работать?

Nikita
21.08.2017
16:31:19
ты просто делаешь
interface IClassFactory : IUnknown
{
IFoo CreateFoo();
IBar CreateBar();
}

Friedrich
21.08.2017
16:31:36
То есть касты будут вызывать QueryInterface через биндера? Или чо?

Nikita
21.08.2017
16:31:49
и инстанс этой фабрики возвращаешь из функции, которую дёргаешь через P/Invoke

Friedrich
21.08.2017
16:32:32
Ок, то есть всё-таки получилась настоящая реализация COM, худо-бедно интегрированная с рантаймом Mono. Это достижение.

Nikita
21.08.2017
16:32:51
а чего там достигать, в моно просто изначально поддержка COM есть

Google

Nikita
21.08.2017
16:32:57
она от виндовой не отличается ничем
ну разве что cdecl вместо stdcall

Friedrich
21.08.2017
16:33:22
Отличается во всяких corner case, но это не должно волновать белых людей.

Nikita
21.08.2017
16:33:33
ну она просто берёт и работает

Friedrich
21.08.2017
16:33:34
Мне кто-то рассказывал, как они запускали свой COM shit под Mono.

Nikita
21.08.2017
16:33:42
ты можешь в плюсовый код шарповые объекты передавать

Friedrich
21.08.2017
16:33:47
Какие-то баги биндера починились, какие-то вылезли.

Nikita
21.08.2017
16:34:14
COM - это очень простая и надёжная технология для межязыкового взаимодействия

Friedrich
21.08.2017
16:34:24
У меня тогда сложилось впечатление, что всерьёз никто не тестировал это дело. Ну или решили забить на поддержку всяческих багодарных апишек типа тех, которые в офисе.

Nikita
21.08.2017
16:35:05
ты про MSWORD?

Friedrich
21.08.2017
16:35:09
DISP_E_TYPEMISMATCH это супернадёжно.

Nikita
21.08.2017
16:35:12
так там всякие RPC и прочая магия
ненене
не надо IDispatch
и OLE с ActiveX не надо
простые интерфейсы на базе IUnknown
всё
ты на код посмотри в файле плюсовый
там тупо нечему ломаться

Google

Friedrich
21.08.2017
16:35:56
Ну ок, это на самом деле довольно просто.
Но без IDispatch теряется весь интерес!

Nikita
21.08.2017
16:36:26
а зачем он?
это как dynamic в шарпах

Friedrich
21.08.2017
16:36:33
С вордом общаться.

Nikita
21.08.2017
16:36:44
зачем мне общаться с вордом на линуксе?

Friedrich
21.08.2017
16:36:46
Вообще на кой хрен COM, кроме как если общаться с офисом? Ну серьёзно.

Nikita
21.08.2017
16:36:48
особенно если там нет ворда

Friedrich
21.08.2017
16:36:55
Именно!

Nikita
21.08.2017
16:37:01

Admin
ERROR: S client not available

Friedrich
21.08.2017
16:37:04
Нет ворда ⇒ и ком не нужен.

Nikita
21.08.2017
16:37:09
и прочие картинки
фонневер
у тебя не хватает кругозора
ВЕСЬ DirectX работает поверх IUnknown

Friedrich
21.08.2017
16:37:35
На линуксе?

Nikita
21.08.2017
16:37:40
и на линуксе тоже

Friedrich
21.08.2017
16:37:49
На линуксе работает DX?

Nikita
21.08.2017
16:37:50
есть реализация поверх Gallium

Google

Friedrich
21.08.2017
16:37:52
Там какой-то порт?

Vlad
21.08.2017
16:38:10
^2 мага обсуждают сорта алхимии

Friedrich
21.08.2017
16:38:13
Ок, это тянет на аргумент.

Anatoly
21.08.2017
16:39:06
^2 мага обсуждают сорта алхимии
true story.
Пользовался COM два раза.
первый чтобы сдать лабу
второй чтобы с excel общаться.
Не понимаю половины что они говорят. нихера не помню.

Rustam
21.08.2017
16:39:32
ты пользуешься com каждый день ибо com - это основа .net

Шпроты
21.08.2017
16:39:46
да тут любители костылей всевозможных собраны) все пытаются что то куда то портировать зачем то, собирая кучу кактусов на своем пути, вместо того, чтобы запилить нативное приложение..))

Friedrich
21.08.2017
16:39:52
ВЕСЬ DirectX работает поверх IUnknown
Знаешь, в этих материях мне кругозора правда не хватает. Я грешным делом думал, что у DirectX есть другой, нормальный API, а вот эти COM-штуки они выставили специально для бедных (сишарперов), которые с ними хотят по-быстрому интегрироваться.
Оказалось, что это и был «нормальный» API. Ну ок, ладно. Не такой уж и страшный, в общем-то.

Nikita
21.08.2017
16:39:55

Vlad
21.08.2017
16:40:02

Nikita
21.08.2017
16:40:04
через COM работают апишки хостинга CLR
как у GTK?

Friedrich
21.08.2017
16:40:48
заблуждение
Ну, в историческом плане-то он прав. COR изначально расшифровывалось как COM Object Runtime или типа того.

Владимир
21.08.2017
16:41:29

Nikita
21.08.2017
16:41:37
вы просто ненавидите COM
а он халёсий

Anatoly
21.08.2017
16:41:43

Nikita
21.08.2017
16:41:57
и сама идея у него здравая

Friedrich
21.08.2017
16:41:59

Nikita
21.08.2017
16:42:00
а именно
"давайте стандартизируем формат vtable"
Эта группа больше не существует