Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Мурена от 13-01-2019, 00:23:02

Название: Не работает приведение прокси к типу
Отправлено: Мурена от 13-01-2019, 00:23:02
Доброго всем здравия!
Возможно, мой вопрос покажется странным или , возможно, я вообще что то не то делаю, поскольку пробую .NET совсем недавно. Но в общем, возникла мысль создать свой домен и туда грузить нужные сборки. Но попытки пока не увенчались большим успехом, поскольку при создании прокси переходника Acad упорно не хочет переводить его к типу создаваемого в новом домене объекта.
 
Код - C# [Выбрать]
  1.         Type type = typeof(Class2);
  2.         var proxy = (Class2)newDomain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName);
  3.             //dynamic proxy = newDomain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName);
  4.  

В чём может быть причина?
Название: Re: Не работает приведение прокси к типу
Отправлено: Александр Пекшев aka Modis от 13-01-2019, 00:25:54
Почитайте эту тему - NetUnload в AutoCAD (https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/netunload) - и не забивайте себе голову
Название: Re: Не работает приведение прокси к типу
Отправлено: Мурена от 13-01-2019, 00:54:13
Спасибо, почитала.
Интересные попытки, интересно, с тех пор автор пытался ещё этим заниматься.
Кста, dom.SetDynamicBase() вроде не переопределяет базовый каталог , где CLR ищет сборки, это каталог для поиска динамически создаваемых сборок
Название: Re: Не работает приведение прокси к типу
Отправлено: Александр Ривилис от 13-01-2019, 00:57:08
Интересные попытки, интересно, с тех пор автор пытался ещё этим заниматься.
Это было бы бессмысленным занятием.
Название: Re: Не работает приведение прокси к типу
Отправлено: Мурена от 13-01-2019, 01:05:28
Мне думалось работать в другом домене со своими классами, которые не используют среду автокада. Акад в этом случает тоже будет вести себя непредсказуемо? Бессмысленно пытаться с Вашей точки зрения?
Название: Re: Не работает приведение прокси к типу
Отправлено: Александр Ривилис от 13-01-2019, 01:06:25
Мне думалось работать в другом домене со своими классами, которые не используют среду автокада.
Зачем?
Название: Re: Не работает приведение прокси к типу
Отправлено: Мурена от 13-01-2019, 01:09:57
Куча сборок, которые часто перебилживаются
Название: Re: Не работает приведение прокси к типу
Отправлено: Александр Ривилис от 13-01-2019, 01:19:33
Куча сборок, которые часто перебилживаются
Смысл в том, что вы собираетесь выгружать/загружать их в AutoCAD? Вы конечно можете экспериментировать, но не вижу в этом смысла. Последние 12 лет это пробовали делать неоднократно, но это ни у кого не получилось. В лучшем случае удавалось повторно загружать сборку (изменив её имя), но это может привезти к куче других проблем...
Название: Re: Не работает приведение прокси к типу
Отправлено: Мурена от 13-01-2019, 01:23:44
Вот ещё интересный момент из статьи по ссылке. В ответе Андрею написано " there are some global variables (cross domains)". Что это вообще такое, впервые слышу. Может подскажете, где можно ознакомиться?
Название: Re: Не работает приведение прокси к типу
Отправлено: Александр Ривилис от 13-01-2019, 01:41:15
Вот ещё интересный момент из статьи по ссылке. В ответе Андрею написано " there are some global variables (cross domains)". Что это вообще такое, впервые слышу. Может подскажете, где можно ознакомиться?
В данном случае я не знаю что именно автор имел в виду. В силу того, что часть сборок AutoCAD не managed, а mixed (т.е. часть кода в них native C++), возможно использование глобальных переменных. Ну а между AppDomain можно передавать данные вот так: http://csharp-slackers.blogspot.com/2008/09/pass-data-between-application-domains.html