我在Windows CE 5.0下用Compact Framework3.5编写这段代码,以处理两个不同的数据库:
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlServerCe;
using System.Data.Common;
public myClass
{
private DbConnection dbCn;
private DbCommand dbCmd;
public void myClass(bool ce)
{
if (ce)
{
dbCn = new SqlCeConnection();
dbCmd = new SqlCeCommand();
}
else
{
dbCn = new SqlConnection(); // COMPILER ERROR Cannot implicitly convert type 'System.Data.SqlClient.SqlConnection' to 'System.Data.Common.DbConnection'
dbCmd = new SqlCommand();// COMPILER ERROR Cannot implicitly convert type 'System.Data.SqlClient.SqlCommand' to 'System.Data.Common.DbCommand'
}
}为什么无法将SqlXX转换为DbXX?来自MSDN SqlXX的是DbXX!顺便说一句,SqlCeXX没有问题。我不能使用cf中缺少的DbPoviderfactory。
谢谢
发布于 2013-04-19 20:24:21
你正在尝试做的是Covariance and Contravariance in Generics,但是直到.NET 4.0才出现。
更新似乎从[DbConnection]到[SqlConnection]的转换可能会省略一些参数,所以微软不允许简单的转换。
如果你真的想做到这一点,请查看这个帖子,看看如何编写代码:
https://stackoverflow.com/questions/16102400
复制相似问题