私の後輩の同僚は、非常に恐ろしく恐ろしいコードを書くことに成功しました。
printJob.Type = item[LocalFunctions.GetName(new { printJob.Type })].ToString();
public static string GetName<T>(T item) where T : class
{
try
{
return typeof(T).GetProperties()[0].Name;
}
catch (Exception ex)
{
return null;
}
}
GetName は何を出力すると思いますか? 「タイプ」を出力します!これがどのように可能かわかりません。私の最初の考えは、MS は値の元のプロパティと同じ名前のプロパティを持つ匿名型を作成するということです (コンパイラの魔法?)。これはサポートされている機能ではない可能性があるため、後輩の同僚に理解できないものを使用しないようにアドバイスしました。
しかし、それでは疑問が残ります。これはどのようにして可能になるのでしょうか?