2

私は現在、オブジェクトを呼び出して渡すと、オブジェクトを XML ドキュメントにシリアル化するプログラムを D で作成しようとしています。オブジェクトを渡すのと同じくらい簡単にしたいのですが、それができるかどうかは完全にはわかりません。例:

class A
{
    //Constructors and fluff
    ....

    int firstInt;
    int secondInt;
}

.....
A myObj = new A();
XMLSerialize(myObj);

出力は次のようになります

<A.A>
    <firstInt></firstInt>
    <secondInt></secondInt>
</A.A>

それで、オブジェクト内の変数の名前を取得することさえ可能ですか、それともすべて手動で行う必要がありますか?

4

3 に答える 3

6

コードは千の言葉の価値があります (意図的に簡略化されています):

import std.stdio;

void print(T)(T input)
    if (is(T == class) || is(T == struct))
{
    foreach (index, member; input.tupleof)
    {
        writefln("%s = %s", __traits(identifier, T.tupleof[index]), member);
    }
}

struct A
{
    int x, y;
}

void main()
{
    print(A(10, 20));
}
于 2013-11-28T22:22:51.843 に答える
1

.stringof変数の名前を含む文字列を返します。

void main()
{
    int some_int;
    assert(some_int.stringof == "some_int");
}
于 2013-11-28T20:30:31.033 に答える