【发布时间】:2015-02-11 02:52:56
【问题描述】:
我有一个很大的对象列表,对象包含字符串名称、字符串地址、字符串城市等内容。
我想创建一个像这样的 findEqualsMatch 方法。它接受一个名为 varName 的字符串,然后搜索调用 varName 的对象的变量。
这样,如果我执行 data.FindEquals("name", "tom") 它会搜索对象“name”属性等于 tom,同时您可以编写“address”,它会搜索地址属性。
public List<Datum> FindEquals(String varName, String value)
{
List<Datum> results = new List<Datum>();
foreach (Datum result in data)
{
//should search for address variable
// instead of if(result.Address == value)
if (result.varName == value)
results.Add(result);
}
return results;
}
List<Datum> newResults = data.FindEquals("address", "123 street");
整个目的是查询一组实际的 API 结果并返回一个由您插入到函数中的任何变量类型搜索的集合。
【问题讨论】:
-
您在寻找什么?值还是 varName?
-
我正在从对象内部的 varName 中搜索变量的值...这是否清楚?这样,如果我执行 data.FindEquals("name", "tom") 它会搜索对象“name”属性等于 tom,同时您可以编写“address”,它将搜索地址属性。
-
您必须使用反射(见下文),或者更好/更快/类型安全的是将
String varName替换为匹配器委托。