我的一个初级同事设法编写了非常可怕的代码。
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 将创建一个匿名类型,其属性与值来自的属性同名(编译器魔术?)。由于这不可能是受支持的功能,我建议我的初级同事不要使用他无法理解的东西。
但这留下了一个问题:这怎么可能?