gpt4 book ai didi

sqlite - Xamarin PCL和sqlite.net

转载 作者:行者123 更新时间:2023-12-03 19:45:10 25 4
gpt4 key购买 nike

在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.


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

非常感谢你

最佳答案

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

public object sqlLeggi(string sql, Type myType){


在这里, myTypeType对象,引用 Type class的实例。

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>();
[..]
}

关于sqlite - Xamarin PCL和sqlite.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22609805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com