I'd suggest putting IsDoable() in the interface or in the object, and then providing the action for the check as the parameter. If action is an instance of an Action class, it should be easy to use an overloaded IsDoable(Action myAction) that includes a call to getPossibleAction().
So, the line would become: if(object.isDoable(action))
Or, you could change it so the action doesn't need to be declared ahead of time: if(object.isDoable(object.getObjectType().getPossibleAction())
If you sub-class "object" properly (so you can use the value from .GetObjectType(), and let's call this childObject) and the language allows it, you should be able to do if(childObject.isDoable(childObject.getPossibleAction())
I should note that, if you are creating the action before checking if it is doable, you might want to rethink that. It's usually better to determine which actions are doable, and then create them. But, there are also many scenarios where the only way to determine do-ability is to see what the result would be, or to compare the action to an object that contains the rule set (which is useful when there are multiple rulesets that can be used - like the different variations that casinos have for a single card game). So your order of the operations may be perfectly valid.