在Linq语句中不能使GetProperties成为通用的

Bri*_*ing 0 c# linq

我有以下代码:

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扫描作为参数传入的类的属性?

Rap*_*aus 5

replace typeof(schemaToScan)
Run Code Online (Sandbox Code Playgroud)

通过

schemaToScan.GetType()
Run Code Online (Sandbox Code Playgroud)

schemaToScan是类型的实例,而不是类型.