两个语句myType
扮演着截然不同的角色:
public object sqlLeggi(string sql, Type myType){
这里,myType
是Type
对象,引用Type class的一个实例。
var results = cmd.ExecuteQuery<myType>();
这里,myType
是类型标识符,这是一种语法结构指的是特定类型的,一个实际上是命名myType
在这种情况下。
现在,有通常为两个来处理这一特定问题的方法:
- 中只看
cmd
对象类型,看看是否有,需要一个Type
对象参数,而不是 过载或替代方法
ExecuteQuery
- 使您的方法通用,以便您没有
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>();
[..]
}
请注意,这与可移植类库,xamarin,monotouch,executequery或sqlite无关。这只是“Type”对象和泛型类型参数之间的混淆。 –