我一直在我的代码中写出几个不同的地方,我想创建一个单一的通用函数,但我不太清楚如何。
这是我正在做的一个例子:
public static string FormatCompaniesAsCSV(ICollection<Company> companies)
{
string csv = "";
foreach(Company c in companies)
{
csv += c.CompanyName + ",";
}
return csv.Substring(0, csv.LastIndexOf(","));
}
问题是,如果我想显示所有公司 SKU 或制造该产品的所有工厂,我必须编写基本相同的代码。唯一改变的是对象类型和我正在访问的属性。我想做的是如下所示:
public static string FormatCSV<T>(ICollection<T> elements, string propertyName)
{
string csv = "";
foreach(T element in elements)
{
//I know this next line doesn't work
//this is just a high level conceptualization of what I want to do
csv += element.getPropertyValue(propertyName) + ",";
}
return csv.Substring(0, csv.LastIndexOf(","));
}
我需要一些方法来访问 foreach 循环中元素的属性,但我真的不知道从哪里开始。我已经简要地查看了 System.Linq.Expressions 库,但我并没有找到我想要的东西。
我在正确的轨道上吗?如果没有,有没有更好的方法来完成我想做的事情?