Use the inheritance model definately. Using interfaces will enforce type safety and yield dramatic performance benefits. Plus you will get compile time checking.
If for example you need to rename one of the common properties that you are setting, and you forget to rename the the property in one of the classes, then the reflection code will compile and execute yet will throw an exception at runtime. However, using the
interface model the code will not compile untill all the classes have their properties renamed.
Compile time checking will save you hours of debugging headaches that might occur if accidentallly the class got deployed without having it's property renamed.