1

我需要在 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.

有谁知道是否可以做这样的事情?

非常感谢

4

1 回答 1

1

两个语句中的myTypethe 扮演着非常不同的角色:

public object sqlLeggi(string sql, Type myType){

这里,myType是一个对象,引用了Type 类Type的一个实例。

var results = cmd.ExecuteQuery< myType > ();

这里,myType是一个类型标识符,它是一个引用特定类型的句法结构,在这种情况下实际上会被命名。 myType

现在,通常有两种方法来处理这个特定问题:

  1. 查看对象类型,cmd看看是否有重载或替代方法ExecuteQuery,而不是使用Type对象参数
  2. 使您的方法通用,以便您没有Type对象开始。

第一种情况大概会这样写:

var results = cmd.ExecuteQuery(myType);

第二个是这样的:

public myType sqlLeggi<myType>(string sql{
    SQLiteCommand cmd = DB.CreateCommand(sql);
    var results = cmd.ExecuteQuery< myType > ();
    [..]
}

注意:

  1. 我让方法返回myType而不是object
  2. myType现在被指定为方法的泛型参数:sqlLeggi<myType>

在这种情况下,命名约定将规定您的泛型类型参数被命名T或以某种开头,T所以这是我的建议:

public T sqlLeggi<T>(string sql{
    SQLiteCommand cmd = DB.CreateCommand(sql);
    var results = cmd.ExecuteQuery<T>();
    [..]
}
于 2014-03-24T13:45:59.750 回答