![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Хоббит |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Словил интересный глюк.
Приложение представляет собой комплекс логических игр. Каждая игры подключается в виде отдельной сборки. В каждой игре есть опции (класс опций). Опции сохраняются в файл и загружаются с помощью сериализации. То есть. Есть базовый Game, GameOptions и конкретные реализации
В сборке для игры.
При создание обьекта WordGame в конструкторе Game вызывается метод Read для загрузки опций
Так вот, если создать обычную формочку. Указать ссылку на сборку в Reflections. Создать клас игры и запустить, то все работает. Опции загружаются и сохраняются. Но в рабочем приложении все происходит следующим образом. Сборка подгружается через Assembly.LoadFile В ней ищутся классы наследованые от Game и создаётся объект класса по средством Activator.CreateInstance Так вот в том случае в указанном в коде месте возникает исключение с следющим сообщением Unable cast object of type 'ListWordGameOptios' to type 'ListWordGameOptions'. Не пойму в чем дело. |
||||||
|
|||||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
'ListWordGameOptios' to type
'ListWordGameOptions' Похоже на опечатку -------------------- I don't need a reason being who I am... |
|||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
это я в ручную печатал. В ошибке то все верно написано. В общем он говорит, что не может переделать этот тип в этот же тип.
|
|||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Вот простой пример.
Вот что выдает теперь. Unable to find assembly 'SerialiserAssembly, Version=1.0.0.0, Culture=neutral, P ublicKeyToken=null'. Я вот никак не пойму. Все вызовы выполняются в контексте загруженной сборки, почему он тип не видит? Что делать? Добавлено через 2 минуты и 44 секунды Вот простой пример. [code=csharp] namespace SerializedTest { class Program { static void Main(string[] args) { Assembly serializerAssembly = Assembly.LoadFile(Path.GetFullPath("SerializerAssembly.dll")); Type serializerDirectorType = serializerAssembly.GetType("SerializerAssembly.SerializerDirector"); try { Activator.CreateInstance(serializerDirectorType); } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); } } } namespace SerializerAssembly { public class SerializerDirector { #region Constructors public SerializerDirector() { this.Load(); } #endregion #region Methods public void Load() { try { string path = "file.txt"; TestClass testClass; Serializer serializer = new Serializer(); if (File.Exists(path) == false) { testClass = new TestClass(); testClass.IntField = 10; testClass.ColorField = Color.Beige; serializer.Serialize(path, testClass); } else { testClass = (TestClass)serializer.Deserialize(path); Добавлено через 2 минуты и 55 секунд Вот простой пример. [code=csharp] namespace SerializedTest { class Program { static void Main(string[] args) { Assembly serializerAssembly = Assembly.LoadFile(Path.GetFullPath("SerializerAssembly.dll")); Type serializerDirectorType = serializerAssembly.GetType("SerializerAssembly.SerializerDirector"); try { Activator.CreateInstance(serializerDirectorType); } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); } } } namespace SerializerAssembly { public class SerializerDirector { #region Constructors public SerializerDirector() { this.Load(); } #endregion #region Methods public void Load() { try { string path = "file.txt"; TestClass testClass; Serializer serializer = new Serializer(); if (File.Exists(path) == false) { testClass = new TestClass(); testClass.IntField = 10; testClass.ColorField = Color.Beige; serializer.Serialize(path, testClass); } else { testClass = (TestClass)serializer.Deserialize(path); |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |