Converting objects between classes
Let's say I have two classes: A and B. They share no common parent except %SystemBase. But these classes have some properties with the same name (type may be the same or not):
Class A {
Property data As C;
Property data2;
}Class B {
Property data As D;
Property data3;
}I need to automatically convert object of class A into object of class B. I'm planing to write a class generator that generates a separate class that converts A to B. It would work like this:
1. Query %Dictionary to get list of properties:
- With the same names
- With both properties being of datatype or object type
2. Iterate over result and generate convert method:
- If both properties are datatypes, generate simple set line
- If both properties are objects
- Check if class generator already generated converter class for this pair of classes, call class generator if not
- Add a call to the converter class
Is it a viable approach?
Comments
wouldn't it be easier to store your data in a more generic form to avoid having to do that?
It totally would! Don't have that option though.
Because I want it done automatically. I already wrote several converters manually as described, but started thinking about automating the task.
Why not consider using an Ensemble DTL to do this? Your use case many not be specific to Ensemble but I've used DTLs to do this for instances like you describe.