我正在使用this solution创建OrderAttribute来订购我的属性。输出是我所期望的,但是现在我已经对代码进行了分析,我意识到GetCustomAttributes被调用的次数比我想要的多。对我来说,优化性能的最佳方法是什么?
var ordFunc = new Func<System.Reflection.PropertyInfo, int>(p => ((OrderAttribute) p.GetCustomAttributes(typeof (OrderAttribute), false)[0]).Order);
foreach (var obj in objects)
{
fileWriter.WriteLine(String.Join(",", obj.GetType().GetProperties().OrderBy(ordFunc).Select(x => x.GetValue(obj).ToString())));
}
答案 0 :(得分:3)
关于谢尔盖的提示。
var ordFunc = new Func<System.Reflection.PropertyInfo, int>(p => ((OrderAttribute) p.GetCustomAttributes(typeof (OrderAttribute), false)[0]).Order);
if(!objects.Any())
return;
var properties = objects.First().GetType().GetProperties()
.OrderBy(ordFunc)
.ToArray();
foreach (var obj in objects)
{
fileWriter.WriteLine(String.Join(",", properties.Select(x => x.GetValue(obj).ToString())));
}