Занимаюсь разработкой виртуальной машины на C# используя .NET Core 1.1. Для неё есть специальные исполняемые файлы в которых прописаны названия подключаемых dll библиотек (и не только, но это не суть). Все эти библиотеки находятся в папке vmlib. Каждая из них имеет главный класс наследуемый от VMLibrary и имеют название библиотеки, например System, и имеют метод Load не принимающий аргументов. Названия библиотек в исполняемом файле моей виртуальной машине написаны через запятую. То есть например пользователь указал 2 библиотеки "sys, tex" и вм (виртуальная машина) должна их найти в папке vmlib, затем в каждой библиотеке найти главный класс и выполнить метод Load. Подскажите как реализовать такое, потому что после долгих поисков в интернете я ничего подобного не нашёл :(
Попробуй что-нибудь вроде такого
string dllPath = "путь к vmlib";
string dllSource = "имена библиотек через запятую";
Type mainType = typeof(VMLibrary);
var dllNames = dllSource.Split(',').ToList();
foreach (var dllName in dllNames)
{
var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(dllPath, dllName));
var mainClass = assembly.GetTypes().FirstOrDefault(t => t != mainType && mainType.IsAssignableFrom(t));
if (mainClass != null)
{
var mainObj = Activator.CreateInstance(mainClass) as VMLibrary;
if (mainObj != null) mainObj.Load();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Имеется сервер Web-Api 2, который обращается к БД через dapperНа сервере имеется метод для вызова процедуры из БД, подобный этому: