簡體   English   中英

將對象類型作為參數傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM