Показать сообщение отдельно
Старый 08.09.2010, 11:09
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 1  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Cool ApplicationDomain и интерфейсы

Всем привет
Суть ситуации вот в чем:
- Есть swf-контейнер для нескольких игр
- Есть несколько swf-файлов, в которых зашиты несколько вариантов логики игры (класс Game, называется так во всех swf-ках).
- Далее, есть интерфейс IGame, который зашит во все swf-ки, включая контейнер.

Идея такая, что swf-загрузчик обращается к логике любой игры через IGame.
Но...
Так как имена классов совпадают (логика везде называется Game), то во избежание повторения имен классов, я каждый раз swf с классом Game гружу в новый ApplicationDomain.

И вот в чем весь косяк - интерфейс IGame в загружаемой swf-ке тоже попадает в новый ApplicationDomain, а значит, он уже не равен интерфейсу в swf-ке загрузчике.
Соответственно, кастинг Game из загруженной swf-ки в IGame загружающей возвращает ровно null =(

Уфф... ну вот, наконец-то, и сам вопрос - как лучше с этим разобраться, при учете, что необходимо сохранить имя класса Game во всех swf-ках?

UPD:
Судя по всему, нужного эффекта никак не добиться. По сути, мне нужно было перезаписать класс Game в текущем домене приложения, чего сделать никак нельзя.
Единственный выход для сохранения строгой типизации - это изменение имен классов в загружаемых swf-ках и загрузка этих swf-ок в ApplicationDomain.currentDomain
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 08.09.2010 в 12:01.