В чем отличие вот этих двух реализаций?
Реализация 1:
private QuestFromDll GetQuestConfigFromByets(byte[] data)
{
Assembly assembly = Assembly.Load(data);
var types = assembly.GetTypes();
Type resultType = null;
foreach (Type type in types)
{
foreach (Type interfaceType in type.GetInterfaces())
{
if (interfaceType.Equals(typeof(IQuestConfig)))
{
resultType = type;
break;
}
}
}
var setupObject = (IQuestConfig)Activator.CreateInstance(resultType);
var result = setupObject.SetQuest();
return result;
}
Реализация 2:
private QuestFromDll GetQuestConfigFromByets(byte[] data)
{
var stream = new MemoryStream(data);
Assembly assembly = LoadAssembly(stream);
var types = assembly.GetTypes();
Type resultType = null;
foreach (Type type in types)
{
foreach (Type interfaceType in type.GetInterfaces())
{
if (interfaceType.Equals(typeof(IQuestConfig)))
{
resultType = type;
break;
}
}
}
var setupObject = (IQuestConfig)Activator.CreateInstance(resultType);
var result = setupObject.SetQuest();
return result;
}
private Assembly LoadAssembly(MemoryStream stream)
{
return AssemblyLoadContext.Default.LoadFromStream(stream);
}
что мне дает если я гружу assembly при помощи AssemblyLoadContext
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники