If you have control over the different sets of data, you should make thme implement a common interface which the TypeConvertor classes can reference. The TypeConvertor classes would then reference the interface methods / properties and hence would be able to understand any data soruce which implemented the relevant interface.