Здравствуйте, AndroiT, Вы писали:
AT>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте! Нужна помощь со следующим...
А>>В одной части программы есть код загружающий dll. Загрузка проходит нормально!
А>>А>>Assembly.LoadFrom("My.dll");
А>>
А>>Потом же в другой части кода
А>>А>>Assembly a = Assembly.GetAssembly(Type.GetType("Тип_определенный_в_My.dll"));
А>>
А>>Выдает ошибку! Type.GetType()-не может найти нужный тип, определенный в загруженной до этого dll.
А>>в чем дело??? не могу понять!
А>>Вообщем мне необходимо сначала каким-то образом динамически загрузить dll, а потом
А>>чтобы сработала строчка типа
А>>А>>Assembly a = Assembly.GetAssembly(Type.GetType("Тип_определенный_в_dll"));
А>>
А>>каким образом это можно сделать??
А>>Заранее очень благодарен
AT>Если я не ошибаюсь надо сначала создать объект ч/з CreateInstance:
AT> object x = a.CreateInstance("Тип");
AT>а уже после этого определять тип
AT> Type t = x.GetType();
AT>и использовать его.
AT>А вообще для чего вы это хотите применить?
дело вот в чем... есть dll инкапсулирующая в себе логику приема данных с порта и их десериализацию... причем идет десириализация объектов, тип которых находиться в другой сборке(сборка тоже может быть любая и поэтому статическая привязка сборки отпадает) и неизвестен наперед. Таким образом, перед десериализацией мне необходимо загрузить сборку в домен, а затем уже пускать процесс десериализации!
Вот я и пытаюсь сначала сделать
Assembly.LoadFrom(путь_к_сборке);
а затем уже десериализовать объекты с типами, определенными в сборке-и тут, то и происходит ошибка
Метод
IFormatter.Deserialize(Stream stream);
пытается найти нужную сборку вызовом Assembly.GetAssembly()-не находит ее и вылетает исключение...
Вот такая вот проблема! Как загрузить динамически сборку, чтобы IFormatter.Deserialize(Stream stream) десериализовывал типы определенные в ней