![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 431
|
Доброго времени суток.
У меня появилась проблема - есть 2 проекта, один подгружается в другой, общаются друг с другом через интерфейсы. Дело в том, что некоторые функции интерфейсов возвращают объекты классов которые есть в одном проекте, но нет в другом, а интерфейсы общие: Interfaces -INterface1 -INterface2 Project1 -Class1 -Class2 = Main Class Project2 -Class3 -Class4 = Main Class Class2 имплементит Interface1, и в Project2 , через интерфейс вызывается его геттер someComponent(). При компиляции Project2, мне естественно выдаёт Я нашёл пока 2 выхода, и оба мне не нравятся - указать по всему проекту Class Path (как к папке с интерфейсами), но т.к. таких вот прожектов у меня очень много, придётся проекты зафлудить Class Path'ами, я не знаю хорошо это или нет? Или чтобы метод в интерфейсе возвращал '*' . В принципе сейчас таки делаю, но по идее если кто после меня будет дописывать что-то, через довольно короткое время он захочет меня найти и придушить , т.к. автокомплита нет, и все ошибки в рантайме будут выскакивать.Может есть другой выход? Последний раз редактировалось AlexLucas; 21.11.2012 в 14:43. |
|
|||||
|
Заведите абстрактный класс, от которого будет происходить ваш Class1 и возвращайте его в геттере.
Или я не понял сути проблемы? |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 431
|
Суть в том что классы Class1 и Class2 не видны в Project2, но они используются в интерфейсах. И когда я использую интерфейсы в Project2, мне выдаёт ошибку что нет таких классов - Class1 и Class2.
А чем поможет завести абстрактный класс для Class1? Скорее всего придётся для Class1 делать отдельный интерфейс. Последний раз редактировалось AlexLucas; 21.11.2012 в 14:52. |
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 431
|
Я понимаю что это естественное поведение, и я ищу самое простое решение. А почему абстрактные классы а не интерфейсы?
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Одно непонятно, что Вы собираетесь делать с компонентом неизвестного класса?
По-идее, если Вам действительно не нужно знать класс1 во втором проекте, то и общий Интерфейс просто не должен содержать методы, возвращающие этот тип. Можно завести метод, возвращающий тот же объект-компонент как понятный (и удобный) второму проекту тип, например DisplayObject, а неподходящий (не общий) метод не включать. Если этот метод нужен в Интерфейсе для первого проекта, то сделать второй, не общий, интерфейс, расширяющий первый этим "неудобным" методом. А лучше вообще возвращать из методов интерфейсы, а не классы, раз уж такое разделение)) Добавлено через 52 секунды Ну вот, пока писал, сами всё сообразили)))
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
http://joshblog.net/2007/08/19/enfor...ctionscript-3/ По мне так лучше все-таки интерфейс создать. П.с. пока читал тему, хотел ответить почти то же самое, что написал Wolsh ) |
|
|||||
|
Цитата:
|
|
|||||
|
Modus ponens
|
Если суть задачи в том, чтобы не дублировать класс в каждой флешке, т.как известно, что в рантайме кто-то только один его должен загрузить, то есть смысл подумать об RSL. Оно для того и предназначено, вобщем. Т.е. скомпилировать класс не использующийся в проекте в библиотеку swc, библиотеку добавить в проект как external-library. Но нужно не забыть, что класс из этой библиотеки кто-то должен загрузить, и, по возможности, раньше, чем он потребуется где-то в другом месте.
__________________
Hell is the possibility of sanity |
|
|||||
|
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:47. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|