Нейронные сети являются видом самоизменения кода.
Затем существуют эволюционные алгоритмы , которые изменяют себя.
Благодаря предложению Леппи об использовании события AppDomain.AssemblyResolve мне удалось решить аналогичную проблему. Вот как выглядит мой код:
public void LoadStuff(string assemblyFile)
{
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler(CurrentDomain_AssemblyResolve);
var assembly = Assembly.LoadFrom(assemblyFile);
// Now load a bunch of types from the assembly...
}
Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var name = new AssemblyName(args.Name);
if (name.Name == "FooLibrary")
{
return typeof(FooClass).Assembly;
}
return null;
}
Он полностью игнорирует номер версии и заменяет уже загруженную библиотеку на любую ссылку на библиотеку с именем «FooLibrary». Вы можете использовать другие атрибуты класса AssemblyName
, если хотите быть более строгими. FooClass
может быть любым классом в сборке FooLibrary.