I am assuming your question is if we could parameterize the property name. If you are providing a class name , it would show a validation message asking to provide the key properties . In case the class name is dynamic , if we use the property name it would work. However using parameter name would not work. You might want to look at the generation of the Java code for the Obj-Open method
When you give Param.Key as PropertyName in Obj-Open method, It understands that we are passing one of the parameter defined in the activity parameter page rather considering it as class's key property.
If you want to dynamically pass the Property Name, Write separate Obj-Open method and fetch the class record by passing pyClassName property as desired class name(Dynamic value as you have given in your case) fetch the result of class details in a Page. This page will have Class's key list(pyKeyDeflist). You can traverse through the page list and get the key you want to pass and store it in intermediate(local) variable and pass that intermediate variable in your obj-open method.