我有以下代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
其中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;
}
Run Code Online (Sandbox Code Playgroud)
我所做的就是将硬编码的SolrSchemaApp1替换为不同类型的变量.但是,我得到了错误
找不到类型或命名空间名称'schemaToScan'(您是否缺少using指令或程序集引用?)
我正在努力解决在任意类上使用GetProperties的语法问题.
如何使用Linq扫描作为参数传入的类的属性?
replace typeof(schemaToScan)
Run Code Online (Sandbox Code Playgroud)
通过
schemaToScan.GetType()
Run Code Online (Sandbox Code Playgroud)
schemaToScan是类型的实例,而不是类型.