[英]Pass an object type as parameter
我想替換下面的函數,我的項目中存在幾乎完全相同的函數副本,只有不同的對象類型。 我想要做的是傳遞一個對象類型作為參數。
private void reloadBooks()
{
var books = session.Query.All<Book>();
boklist = new System.ComponentModel.BindingList<Book>(books.ToList<Book>());
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;
}
但這似乎不起作用,我收到以下消息:
“運算符'<'不能應用於'方法組'和'System.Type'類型的操作數”
我讀過類似於使用泛型的東西,但我不認為在這種情況下有用。
泛型正是你想要的:
private BindingList<T> getRecordsOfType<T>()
{
var records = session.Query.All<T>();
return new System.ComponentModel.BindingList<T>(records.ToList<T>());
}
嘗試這個:
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 BindingList<T> getRecordsOfType<T>()
{
var records = session.Query.All<T>();
recordList = new System.ComponentModel.BindingList<T>(records.ToList<T>());
return recordList;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.