两个语句中的myType
the 扮演着非常不同的角色:
public object sqlLeggi(string sql, Type myType){
这里,myType
是一个对象,引用了Type 类Type
的一个实例。
var results = cmd.ExecuteQuery< myType > ();
这里,myType
是一个类型标识符,它是一个引用特定类型的句法结构,在这种情况下实际上会被命名。 myType
现在,通常有两种方法来处理这个特定问题:
- 查看对象类型,
cmd
看看是否有重载或替代方法ExecuteQuery
,而不是使用Type
对象参数
- 使您的方法通用,以便您没有
Type
对象开始。
第一种情况大概会这样写:
var results = cmd.ExecuteQuery(myType);
第二个是这样的:
public myType sqlLeggi<myType>(string sql{
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery< myType > ();
[..]
}
注意:
- 我让方法返回
myType
而不是object
myType
现在被指定为方法的泛型参数:sqlLeggi<myType>
在这种情况下,命名约定将规定您的泛型类型参数被命名T
或以某种开头,T
所以这是我的建议:
public T sqlLeggi<T>(string sql{
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery<T>();
[..]
}