Thank you for your response, Ralf. I am going to try that option as well. But I 
am still not clear on why the current setup does not work. I have ensured 
(through explicit package import and variable declaration in MyApp) that 
IAppModule, IModule1 and IModule2 are all referenced within the main 
application.

I have been trying a host of other things such as trying to load all the 
modules into the same domain as the application, but no luck there either :(



----- Original Message ----
From: Ralf Bokelberg <[EMAIL PROTECTED]>
To: [email protected]
Sent: Friday, October 17, 2008 2:36:19 AM
Subject: Re: [flexcoders] Module Interfaces Inheritance question


Hi Purush

I think iAppModule needs to go into a library project, which is
referenced by the modules but marked as external, while it is embedded
completely in the main application.

Ralf.

On Fri, Oct 17, 2008 at 2:51 AM, purush_y <[EMAIL PROTECTED] com> wrote:
> Hi,
> I did a basic search on this topic and read a few posts, but I
> think my case seems to be a little different here. I have a fairly
> large application that I am designing to be broken into one main
> application that loads multiple modules as required.
>
> My main application implements an IMyApp interface with one method
> right now:
> getModule(modName: String):*
>
> All my modules implement a generic IAppModule interface which includes
> 2 methods:
> -initModule( ) Called after loading and creation of module
> -handleEvent( evt:Event) : Called whenever an event such as MenuEvent
> etc need to be passed to the module.
>
> Each of the modules implement a specific interface, for eg. Module1
> implements IModule1 which extends IAppModule, and Module2 implements
> IModule2 which also extends IAppModule to expose specific
> functionality within each of the module.
>
> So I have the following package structure and classes with their
> interfaces:
> 1) class a.MyApp implements a.mod.common. IMyApp (My main app)
> 2) interface a.mod.common. IModule1 extends interface
> a.mod.common. IAppModule
> 3) interface a.mod.common. IModule2 extends interface
> a.mod.common. IAppModule
> 4) class a.mod.mod1.Module1 implements
> a.mod.common. IModule1 (Module 1 compiles to Module1.swf)
> 5) class a.mod.mod2.Module 2 implements
> a.mod.common. IModule2 (Module 2 compiles to Module2.swf)
>
> My main application handles the logic of loading all the modules at
> starting and as required as runtime and any module requiring access to
> another module asks the main application (through the IMyApp
> interface) for a handle to the other module.
>
> Here is my problem. I am trying to access IModule2 from within
> Module1. I use IMyApp.getModule( "Module2" ) to get a handle to the
> second module, but when I try to downcast it to IModule2, it throws me
> an error saying it encountered error with the type coercion. In the
> error detail it says that it cannot convert
> a.mod.mod2.Module2 to a.mod.common. IModule2 which
> stumps me as the class implements that specific interface.
>
> If I include all methods from IModule1 and IModule2 into the base
> interface IAppModule, remove IModule2 entirely and try to cast the
> IMyApp.getModule( "Module2" ) to IAppModule, it works fine, but this is
> not what I was looking for. I will end up with one monolithic
> IAppModule with every method from every module interface. I am not
> sure what I am missing here. Is there a problem with interface
> inheritance and modules? When I run a link report for the modules, I
> am not sure if I am reading the report right, but I do not see
> IModule2 interface as part of the definitions within script Module2.
>
> Can someone please point me in the right direction for this problem?
>
> Thank you for your help,
> Purush
    

Reply via email to