[英]How can I pass in a type as a parameter, and use it to declare the type of variables in my function?
我對C#相當陌生,遇到一個我找不到明確答案的問題。
我有一個基類“實體”。 此類由幾個“實體”擴展。 當前,我有一個知道如何從數據庫中加載各種“實體”的函數。 我想用一個知道如何從數據庫中加載基類“ Entity”的函數替換所有這些函數。
這是一個函數示例,該函數知道如何僅加載一種類型的“ TestPlan”類型。
public List<TestPlan> LoadTestPlans()
{
List<TestPlan> testPlans = new List<TestPlan>();
using (ITransaction transaction = session.BeginTransaction())
{
testPlans = (List<TestPlan>)session.CreateCriteria<TestPlan>().List<TestPlan>();
transaction.Commit();
}
return testPlans;
}
我想用這樣的東西代替它,但是我無法弄清楚類型轉換的正確之處。
public List<Entity> LoadEntities(Type entityType)
{
List<entityType> entities= new List<entityType>();
using (ITransaction transaction = session.BeginTransaction())
{
entities= (List<entityType>)session.CreateCriteria<entityType>().List<entityType>();
transaction.Commit();
}
return entities;
}
我已經看到了一些具有通用類型List的東西,但不確定如何工作。 我有點猶豫要沿用通用類型路線。 如果您嘗試使用傳入的錯誤類型來調用函數,則我希望編譯時發生錯誤。
您可以使用通用方法:
public List<T> LoadEntities<T>() where T: Entity
{
List<T> entities= new List<T>();
using (ITransaction transaction = session.BeginTransaction())
{
entities= (List<T>)session.CreateCriteria<T>().List<T>();
transaction.Commit();
}
return entities;
}
使用此代碼時,您需要提供所需的類型,而不是T
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.