I think the method that fits better with my situation is using dependency injection.
Create interfaces on common module
On platform specific initilization implement interfaces
also in platform specific register this implementations
Now on common module if you resolve the interface with the container you will get always the correct implementation without any trouble or ugly tricks.
What do you think @Sam?
Thanks everybody for the help!