2012-05-26 57 views
1

环境获得属性名。从泛型列表

有没有办法获得属性名称,因为我想让它们成为我构建的csv文件中的标题行?

,所以我要寻找的结果是string = "ProductId,ProductName,UnitPrice"

+0

http://stackoverflow.com/a/1998049/139698 - 我喜欢下面的解决方案,但我没有理解使用字符串构建器对可能的性能所做的评论。所以我做了一些搜索,发现以下并实现它:http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/ - 这是评论所指的是什么? – Rod

回答

1

可以使用TypeDescriptor类(比普通的反射更有效):

string.Join(",", TypeDescriptor.GetProperties(instance).Select(p => p.Name)) 
3
var headers = this.GetType().GetProperties().Select(p => p.Name).Aggregate((p1, p2) => p1 + "," + p2); 
0
String.Join(",", typeof(Product).GetProperties().Select(p => p.Name)) 

如果你不想使用Linq,你可以通过的GetProperties返回的PropertyInfo数组进行迭代,并串联的名字到一个字符串。