将对象类型作为参数传递

Den*_*ker 2 c# types object parameter-passing

我想替换下面的函数,我的项目中存在几乎完全相同的函数副本,只有不同的对象类型.我想要做的是传递一个对象类型作为参数.

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

    lstBooks.ItemsSource = boklist;              
}
Run Code Online (Sandbox Code Playgroud)

我在考虑这样的事情:

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;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,我收到以下消息:

"运算符'<'不能应用于'方法组'和'System.Type'类型的操作数"

我读过类似于使用泛型的东西,但我不认为在这种情况下有用.

ang*_*son 6

泛型正是你想要的:

private BindingList<T> getRecordsOfType<T>()
{
    var records = session.Query.All<T>();
    return new System.ComponentModel.BindingList<T>(records.ToList<T>());
}
Run Code Online (Sandbox Code Playgroud)