我有以下代码:
public static IList<SortOption> SortValues()
{
var sortValues = (from prop in typeof(SolrSchemaApp1).GetProperties(BindingFlags.Instance | BindingFlags.Public)
where Attribute.IsDefined(prop, typeof(SolrSortAttribute))
select new SortOption(prop.Name)).ToList();
return sortValues;
}
其中 SolrSchemaApp1 是从名为 IsolrDocument 的接口派生的类。
我想传入 SolrSchemaApp2 的一个实例,并让我的代码从该实例而不是 SolrSchemaApp1 中选择排序属性。实际上,我想这样做:
public static IList<SortOption> SortValues(ISolrDocument schemaToScan)
{
var sortValues = (from prop in typeof(schemaToScan).GetProperties(BindingFlags.Instance | BindingFlags.Public)
where Attribute.IsDefined(prop, typeof(SolrSortAttribute))
select new SortOption(prop.Name)).ToList();
return sortValues;
}
我所做的只是用不同类型的变量替换了硬编码的 SolrSchemaApp1。但是,我得到了错误
找不到类型或命名空间名称“schemaToScan”(您是否缺少 using 指令或程序集引用?)
我正在为在任意类上使用 GetProperties 的语法而苦苦挣扎。
如何使用 Linq 扫描作为参数传入的类的属性?