В чем отличие вот этих двух реализаций?
Реализация 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
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости