我需要在pcl Xamarin中向函数传递一个类型,然后用它来执行查询。 我尝试使用的代码是:
public object sqlLeggi(string sql, Type myType){
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery< myType > ();
[..]
}
但它不起作用,给我这个错误:
The type or namespace 'myType' could not be found.
有谁知道是否有可能做这样的事情?
非常感谢
答案 0 :(得分:1)
两个陈述中的myType
扮演着截然不同的角色:
public object sqlLeggi(string sql, Type myType){
此处,myType
是Type
对象,引用Type class的实例。
var results = cmd.ExecuteQuery< myType > ();
此处,myType
是类型标识符,它是一个引用特定类型的语法结构,实际上是名称 {{1}在这种情况下。
现在,通常有两种方法可以解决这个问题:
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