我们有一个类用于包含搜索中使用的过滤条件。在类中是过滤条件的字典,其中包含值。
我想做的就是这样。
protected string GetSearchValue(string name)
{
if (!FilterCache.HasFilter(name)) return string.Empty;
var filterType = FilterCache.GetFilterType(name);
var filter = FilterCache.GetFilter<filterType>(name); // <- This fails
if (filter == null || !filter.IsSet) return string.Empty;
return filter.Value.ToString();
}
GetFilterType如下所示:
public Type GetFilterType(string name)
{
return SearchElements[name].GetType();
}
最后,我想得到过滤器的值并将其返回给用户界面。
答案 0 :(得分:0)
您需要使用反射来调用具有在编译时未知的type参数的泛型,如下所示:
var getFilterGeneric = typeof(FilterCache)
.GetMethod("GetFilter")
.MakeGenericMethod(filterType)
.Invoke(typeof(FilterCache) /* or null */, name);