在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.有没有人知道是否有可能做这样的事?
非常感谢
发布于 2014-03-24 13:45:59
这两个语句中的myType扮演着非常不同的角色:
public object sqlLeggi(string sql, Type myType){在这里,myType是一个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而不是objectmyType现在被指定为方法的泛型参数:sqlLeggi<myType>在本例中,命名约定将要求您的泛型类型参数命名为T或以T开头的内容,下面是我的建议:
public T sqlLeggi<T>(string sql{
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery<T>();
[..]
}https://stackoverflow.com/questions/22609805
复制相似问题