Written by

Senior Cloud Architect at InterSystems
MOD
Question Eduard Lebedyuk · Mar 23, 2017

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

Fabian Haupt · Mar 23, 2017

wouldn't it be easier to store your data in a more generic form to avoid having to do that?

0
Eduard Lebedyuk  Mar 23, 2017 to Fabian Haupt

It totally would! Don't have that option though.

0
Eduard Lebedyuk  Mar 23, 2017 to Stephen Canzano

Because I want it done automatically. I already wrote several converters manually as described, but started thinking about automating the task.

0
Stephen Canzano · Mar 23, 2017

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.

0