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'类型的操作数"
我读过类似于使用泛型的东西,但我不认为在这种情况下有用.
泛型正是你想要的:
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)