Link to home
Start Free TrialLog in
Avatar of cghrmauritius
cghrmauritiusFlag for Mauritius

asked on

Simple question: hows to dynamically reference a class object

Hi i  need a little help as my brain has gone dark on me :-)

i have the below object backupCartItem (simplified)

and i have a function which needs to reference different properties within the different contained objects.

public function createEndorcementItem( propertyClass:String, propertyName:String ):void
{
var val:* = backupCartItem[ propertyClass ][ propertyName ];
trace( val.toString();
}

public function doSomething():void
{
createEndorcementItem( 'sessionVO.primaryInsurie', 'AGE_NOW');
}


the above little script example should set val to being
backupCartItem.sessionVO.primaryInsurie.AGE_NOW

but it throws an error

Property sessionVO.primaryInsurie not found on com.travins.cairngorm.model.CartItemVO

how can i dynamically reference the object please






      backupCartItem      com.travins.cairngorm.model.CartItemVO (@70bd781)      
            admin_fee      0      
            id      1174 [0x496]      
            sessionVO      com.travins.cairngorm.model.CurrentSessionVO (@27a2881)      
                  ADULT_COUNT      1      
                  CHILD_COUNT      0      
                  primaryInsurie      com.travins.cairngorm.model.InsurieVO (@1fa5dc1)      
                        AGE_AT_START_TIME      40 [0x28]      
                        AGE_ERROR      ""      
                        AGE_IS_VALID      true      
                        AGE_NOW      40 [0x28]      
                        COUNTRY_ID      1      
                        DATE_OF_BIRTH      Date (@71dbcd1)      
ASKER CERTIFIED SOLUTION
Avatar of dgofman
dgofman
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of cghrmauritius

ASKER

humm no sorry i needed it the other way round im not trying to set the value im trying to get the value of

backupCartItem[ propertyClass ][ propertyName ]

i know there is a value cause if i query it manually as

backupCartItem.sessionVO.primaryInsurie.AGE_NOW  i do ge the cirrect value but i cant get it when using the square brackets

any ideas please
i see yuor example does work, i must have something wrong with my backupcartItem but i dont understand why because i can get the value if done manually

thanks i will assign you the points

thanks for your time
Thanks
Actually if checked in debuger your example isnt right im afraid

backupCartItem      Object (@8cb9421)      
      sessionVO.primaryInsurie      Object (@8cb93f9)      
            AGE_NOW      25 [0x19]      


as per my original which is what my object dump looks like

backupCartItem      com.travins.cairngorm.model.CartItemVO (@70bd781)      
             sessionVO      com.travins.cairngorm.model.CurrentSessionVO (@27a2881)      
                   primaryInsurie      com.travins.cairngorm.model.InsurieVO (@1fa5dc1)      
                        AGE_IS_VALID      true      
                        AGE_NOW      40 [0x28]      

please notice that in your example the primaryInsurie object isnt nested inside sessionVO

ok i have found a solution finally your comment gave me an idea which worked so thanks for the pointers


here is my solution but im sure its a dirty method and that there must be a cleaner way!!!

public function createEndorcementItem( propertyClass:String, propertyName:String ):void
{
	var arr:Array = propertyClass.split(".");
				
	var cur:Object;
	cur = backupCartItem;
				
	for each (var a:String in arr)
	{
		cur = cur[a];
	}
	var val:* = cur[propertyName];
}

Open in new window

I am very happy to know I helped you.
Regards,
David