Неожиданная ошибка при воспитании объекта COM в динамическую переменную C# 'C#

Место общения программистов C#
Anonymous
Неожиданная ошибка при воспитании объекта COM в динамическую переменную C# '

Сообщение Anonymous »

Я заинтересован в возможностях, предлагаемых ключевым словом C# , но я сталкиваюсь с неожиданными проблемами.
Если я создаю шаблон .net 4.8 в Visual Studio 2022 ...
Это работает:

Код: Выделить всё

dynamic obj = Marshal.GetActiveObject("Excel.Application");
obj.Workbooks.Add();
< /code>
Это тоже работает: < /p>
object obj1 = Marshal.GetActiveObject("FancySoft.Application");
object obj2 = obj1.GetType().InvokeMember("FancyProperty", BindingFlags.GetProperty, null, obj1, null);

Это не удается с системой.

Код: Выделить всё

dynamic obj1 = Marshal.GetActiveObject("FancySoft.Application");
object obj2 = obj1.FancyProperty;
< /code>
Наконец, если я добавлю ссылку на Com в Fancysoft в мой проект, это работает как ожидалось: < /p>
var obj1 = (Application) Marshal.GetActiveObject("FancySoft.Application");
var obj2 = obj1.FancyProperty;
Я нашел интересную ветку для обсуждения, которая предполагает, что поставщик может намеренно ограничить использование ключевого слова в клиентских приложениях. /> Вы видели это поведение в другом месте?
Я что -то упускаю? (Посмотрев на файлы .tlb, используя некоторые трюки с отражением и т. Д.?)


Подробнее здесь: https://stackoverflow.com/questions/774 ... c-variable

Вернуться в «C#»