Исполнение функций подгружаемых во время исполнения программы из сторонних хранилищ - C#
Формулировка задачи:
День добрый, отзывчивые, знающие, смекалистые.
Не знаю как чётко сформулировать вопрос, поэтому опишу как смогу, надеюсь поймёте.(Опытным программистам к таким постановкам проблем не привыкать )
Язык C#.
Предположим что есть программа, которая по своей сути является оболочкой без особого функционала, но с пользовательским интерфесом (форма с полями ввода и кнопками). И вот эта программа, должна смотреть в определённом месте все файлы нами заданного типа. (пофиг каком, пусть папка с именем LibSrc которая рядом с экзешником самой программы лежит). Файлы эти по своей "структуре" однотипные, но по содержанию разные. Содержат эти файлы только функции. Причём функции только типа
Если файлом ПОТРЕБУЕТСЯ для решения проблеммы ещё что-то содержать - это нормально и допустимо.
Программа же должна по желанию пользователся должна выдать список всех доступных функций из этих файлов и иметь возможность запускать выбранную пользователем из этого списка функцию с параметрами (котоыре все вида byte[][] args)
Собственно вопрос, какой сущьностью должны быть эти файлы с функциями? Библиотеками, сериализованными экземплярами класса или ещё чемто? И собственно как это должно работать?
Писать код не прошу(хотя и приветствую) но меня больше интересует сам подход и общая идея.
где
public delegate bool DelegateMy(ref byte[][] args, ref String ReturnNameThisFuntion);
Тоесть в каждой библиотеке есть функция с одним и темже именем которая возвращает лист с указателем на все её функции. Но я не уверен что такое вобще реализуемо, не пробовал, просто мысль.
Другая идея это каждый такой вот файл будет не DLL а сохраненный сериализованный класс(экземпляр?!), который является наследником от некоторого класса, который позволил бы организовать взаимодействие программы с нашей программой, но в каждом таком классе переопределены функции и их коичество(!), однако количество функций указано в виде константного поля.
Ваши коментарии, пожалуйста.
bool FuncNx(ref byte[][] args, ref String ReturnNameThisFuntion)
Варианты подходаЖ:
Была идея сделать эти файлы в виде DLL, но собственно как работать с данной конкретной библиотекой остаётся непонятным - самой программе же чтбы подгрузить библиотеку и воспользоваться функциями из неё нужно же знать имена этих функций, не так ли? Можно конечно в каждую такую длл ку засунуть функцию типаbool GiveMeYourFuncsList(ref List<DelegateMy> FuncList)
Вы хоть маякните если "что автор хотел то вобще?! он сам то понял? я нет!"
Решение задачи: «Исполнение функций подгружаемых во время исполнения программы из сторонних хранилищ»
textual
Листинг программы
var functionMap = assembly.GetTypes().ToDictionary(t => t, t => t.GetMethods());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д