У меня есть сценарий, где мой клиент является WPF
App скажет W
, Есть 3 сборки говорит A
, B
, C
, которые не должны подвергаться воздействию W
, следовательно, 3 сборки ссылается на бетонном заводе, скажет F
, который создает требуемый экземпляр и предоставляет W
.Как загрузить ссылочную сборку в другую ссылочную сборку?
Я использую отражение в F
, чтобы сгенерировать 3 объекта.
Ниже приведен код
return (IClass)Activator.CreateInstance(Assembly.Load("A").GetType("A.AClass"),
BindingFlags.NonPublic | BindingFlags.Instance, null, null, null);
код работает, если я ссылаться A
в W
, но не работает (System.IO.FileNotFound Exception
), когда A
упоминается в F
(я перепроверена с Assembly.GetExecutingAssembly().GetReferencedAssemblies()
и A
не загружается).
Я прочитал, что Assembly
не может быть загружен, если это не требуется. Но как мой клиент WPF
загружает сборку. Если это ожидаемое поведение, я бы пошел с поиском текущего пути Directory
и добавлением к нему A.dll
. Любые мысли вокруг?
Вы пытались использовать обработчик ['AppDomain.AssemblyResolve'] (http://msdn.microsoft.com/pl-pl/library/system.appdomain.assemblyresolve (v = vs.110) .aspx)? –
Разве это не вспомогательная техника, я имею в виду, смогу ли я получить исходную требуемую сборку? –
Насколько я понимаю, вы знаете эту требуемую сборку, поэтому можете ее предоставить через 'Assembly.LoadFrom' –