c#で変数名を完全な文字列に変換したい
解決したいこと
c#で変数名を完全な文字列に変換したいのですが、nameofだと期待する結果になりません。
発生している問題・エラー
実際の結果
nameof(aaa) -> aaa
nameof(aaa.bbb) -> bbb
nameof(aaa.bbb.ccc) -> ccc
期待する結果
nameof(aaa) -> aaa
nameof(aaa.bbb) -> aaa.bbb
nameof(aaa.bbb.ccc) -> aaa.bbb.ccc
該当するソースコード
public class AAA
{
public class BBB
{
public int ccc;
}
public BBB bbb;
}
void Example()
{
var aaa = new AAA();
Debug.WriteLine($"nameof(aaa) -> {nameof(aaa)}");
Debug.WriteLine($"nameof(aaa.bbb) -> {nameof(aaa.bbb)}");
Debug.WriteLine($"nameof(aaa.bbb.ccc) -> {nameof(aaa.bbb.ccc)}");
}
以下のようにすれば期待する結果にはなりますが、面倒ですし汎用性がありません。
void Example()
{
var aaa = new AAA();
Debug.WriteLine($"nameof(aaa) -> {nameof(aaa)}");
Debug.WriteLine($"nameof(aaa.bbb) -> {nameof(aaa)}.{nameof(aaa.bbb)}");
Debug.WriteLine($"nameof(aaa.bbb.ccc) -> {nameof(aaa)}.{nameof(aaa.bbb)}.{nameof(aaa.bbb.ccc)}");
}
シンプルな記述で変数名を完全な文字列に変換する方法はないでしょうか?