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

zoujiaqing zoujiaqing at gmail.com
Fri Nov 15 09:06:35 UTC 2019


On Thursday, 14 November 2019 at 21:03:28 UTC, Paul Backus wrote:
> On Thursday, 14 November 2019 at 08:47:15 UTC, zoujiaqing wrote:
>> Like main function's code:
>>
>> [...]
>>
>> 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);
>> }
>> ```
>
> You can do something pretty similar with TypeInfo:
>
> void main()
> {
>     TypeInfo_Class class1;
>     TypeInfo_Class class2;
>
>     class1 = typeid(A);
>     class2 = typeid(B);
>
>     auto obj1 = class1.create;
>     auto obj2 = class2.create;
>
>     if (true)
>     {
>         {
>         	Base obj = cast(Base) obj1;
>         	writeln(obj.count()); // 1
>         }
>         {
>         	Base obj = cast(Base) obj2;
>         	writeln(obj.count()); // 2
>         }
>     }
> }

I want get property type, like this:

auto testType1 = A.a;
auto testType2 = B.a;

if (testType1 is testType2)
{
     writeln("yes");
}



More information about the Digitalmars-d mailing list