powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преоброзование свойства в тип
10 сообщений из 10, страница 1 из 1
Преоброзование свойства в тип
    #39940496
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Есть такая задача.
Я хочу вызывать динамически функцию из внешней библиотеки.
Я пытаюсь присвоить свойству или полю значение, а потом передасть его вместо типа.
Мне выдаётся соообщение, что я использую свойство, как тип.
Как можно сделать такое преобразование?

Допустим, я присвоил для свойства d2 значение bool, а для d4 значение string.

Код: c#
1.
2.
3.
4.
5.
6.
7.
            public string d1 { get; set; }
            public string d2 { get; set; }
            public string d3 { get; set; }
            public string d4 { get; set; }

[DllImport(d1,CharSet=CharSet.Unicode,SetLastError=true)]
public static extern d2 d3(d4 a);
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39940532
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
Привет.
Есть такая задача.
Я хочу вызывать динамически функцию из внешней библиотеки.
Я пытаюсь присвоить свойству или полю значение, а потом передасть его вместо типа.
Мне выдаётся соообщение, что я использую свойство, как тип.
Как можно сделать такое преобразование?

Никак - такое не поддерживает ни механизм p/invoke, ни сам язык.
Что-то более-менее приближенное можно изобразить с помощью ручной загрузки неуправляемой dll (LoadLibrary), затем поиска нужной функции (GetProcAddress), далее получением делегата через вызов Marshal.GetDelegateForFunctionPointer<TDelegate>(IntPtr) (и нужно еще следить, чтобы сигнатура найденной функции соответствовала сигнатуре делегата).
На практике всё это проще заместить явными вызовами конкретных функций, завернув логику их выбора в класс, реализующий какой-нибудь [порождающий] паттерн - конкретика зависит от того, что требуется в итоге.
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941567
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны, а существует ли в C# такие функции, которые исполняют код, заключённый в кавычки.
Наподобие Eval в JavaScript или Execute в AutoIt?
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941619
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941627
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus,

CodeDOM
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941634
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
Сон Веры Павловны, а существует ли в C# такие функции, которые исполняют код, заключённый в кавычки.
Наподобие Eval в JavaScript или Execute в AutoIt?


Можно JavaScript исполнять внутри C#.

https://github.com/sebastienros/jint
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941635
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
Сон Веры Павловны, а существует ли в C# такие функции, которые исполняют код, заключённый в кавычки.
Наподобие Eval в JavaScript или Execute в AutoIt?


Если на нравится JavaScript, можете Lua

https://www.moonsharp.org/
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941637
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Скриптинг тоже можно, но для embedded скриптинга, C# плохо подходит. Нужно заточенные под это языки.
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941661
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, буду смотреть эти варианты.
...
Рейтинг: 0 / 0
Преоброзование свойства в тип
    #39941674
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще на заметку. https://github.com/oleg-shilo/cs-script
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преоброзование свойства в тип
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]