我有一些課程,例如:
class Contract
{
public int id;
public string num;
public double value;
public bool isnew;
public bool toupdate;
...
}
class Attachment
{
public int id;
public int year;
public int finance;
public double value;
...
}
當我呼叫 a 時,MySqlDataReader.Read()我想通過一個通用函式呼叫它,它回傳 a List。而不是為每個類創建一個方法,我想要這樣的東西:
public List<T> ReadAs<T>()
{
List<T> result;
switch (T){
case Contract: { result = ReadAsContract(); DoSomething1(); break; }
case Attachment: { result = ReadASAttachment(); DoSomething2(); break; }
}
return result;
}
private List<Contract> ReadAsContract() {...here i make call MySqlDataReader.Read() and make list of instances...}
private List<Attachment> ReadAsAttachment() {...here i make call MySqlDataReader.Read() and make list of instances...}
所以我的問題是:是否有可能制作出像我描述的那樣的東西?還是制作大量ReadAsMyClass方法并每次呼叫確切的方法更好?
uj5u.com熱心網友回復:
這可能有用,
public List<T> ReadAs<T>()
{
var type = typeof(T);
List<T> result = null;
switch (type.Name)
{
case "Contract": {
result = ReadAsContract().Cast<T>().ToList();
DoSomething1(); break;
}
case "Attachment": {
result = ReadAsAttachment().Cast<T>().ToList();
DoSomething2(); break;
}
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/488789.html
上一篇:在C 類中初始化另一個類
