The possibility of a DLang dynamic transfer class type and a member type.

zoujiaqing zoujiaqing at gmail.com
Thu Nov 14 08:47:15 UTC 2019


Like main function's code:


```D
import std.stdio;

interface Base
{
     int count();
}

class A : Base
{
     int a = 1;
     int b = 4;

     int count()
     {
         return a;
     }
}

class B : Base
{
     int b = 2;
     int a = 3;

     int count()
     {
         return b;
     }
}

void test(Type classType, Type propertyType1, Type peropertyType2)
{
     // ...
}

void main()
{
     Type class1;
     Type class2;

     class1 = A;
     class2 = B;
     class3 = A;

     auto obj1 = new class1;
     auto obj2 = new class2;

     if (true)
     {
         Base obj = cast(Base) obj1;
         writeln(obj.count());

         Base obj = cast(Base) obj2;
         writeln(obj.count());
     }

     assert(checkClass(class1, class2));
     assert(checkClass(class1, class3));

     test(A, A.a, B.b);
}
```


More information about the Digitalmars-d mailing list