C# 将对象类型作为参数传递

C# 将对象类型作为参数传递,c#,object,types,parameter-passing,C#,Object,Types,Parameter Passing,我想替换下面的函数,在我的项目中,这个函数几乎完全相同,只有不同的对象类型。我想做的是将对象类型作为参数传递 private void reloadBooks() { var books = session.Query.All<Book>(); boklist = new System.ComponentModel.BindingList<Book>(books.ToList<Book>()); lstBooks.ItemsSourc

我想替换下面的函数,在我的项目中,这个函数几乎完全相同,只有不同的对象类型。我想做的是将对象类型作为参数传递

private void reloadBooks()
{
    var books = session.Query.All<Book>();
    boklist = new System.ComponentModel.BindingList<Book>(books.ToList<Book>());

    lstBooks.ItemsSource = boklist;              
}
private void reloadBooks()
{
var books=session.Query.All();
boklist=newsystem.ComponentModel.BindingList(books.ToList());
lstBooks.ItemsSource=boklist;
}
我在想这样的事情:

private void getRecordsOfType(object objObject)
{
    System.ComponentModel.BindingList<objObject.GetType()> recordList = new System.ComponentModel.BindingList<objObject.GetType()>();

    var records = session.Query.All<objObject.GetType()>();
    recordList = new System.ComponentModel.BindingList<objObject.GetType()>(records.ToList<bjObject.GetType()>());

    return recordList;
}
private void getRecordSoftType(对象对象对象)
{
System.ComponentModel.BindingList记录列表=新建System.ComponentModel.BindingList();
var records=session.Query.All();
recordList=new System.ComponentModel.BindingList(records.ToList());
返回记录列表;
}
但这似乎不起作用,我得到以下信息:

“运算符”请尝试以下操作:

private System.ComponentModel.BindingList<T> getRecordsOfType<T>()
{
    System.ComponentModel.BindingList<T> recordList = new System.ComponentModel.BindingList<T>();

    var records = session.Query.All<T>();
    recordList = new System.ComponentModel.BindingList<T>(records.ToList<T>());

    return recordList;
}
private System.ComponentModel.BindingList getRecordsOfType()
{
System.ComponentModel.BindingList记录列表=新建System.ComponentModel.BindingList();
var records=session.Query.All();
recordList=new System.ComponentModel.BindingList(records.ToList());
返回记录列表;
}

泛型正是您想要的:

private BindingList<T> getRecordsOfType<T>()
{
    var records = session.Query.All<T>();
    return new System.ComponentModel.BindingList<T>(records.ToList<T>());
}
private BindingList getRecordsOfType()
{
var records=session.Query.All();
返回新的System.ComponentModel.BindingList(records.ToList());
}

使用泛型类型参数:

private BindingList<T> getRecordsOfType<T>()
{
    var records = session.Query.All<T>();
    recordList = new System.ComponentModel.BindingList<T>(records.ToList<T>());    
    return recordList;
}
private BindingList getRecordsOfType()
{
var records=session.Query.All();
recordList=new System.ComponentModel.BindingList(records.ToList());
返回记录列表;
}
您正在尝试使用泛型-您正在尝试将
objObject.GetType()
作为泛型类型参数传递。但是类型参数是在编译时计算的,而不是在执行时。您也应该使方法泛型化。