首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

无法将类型“IBatisNet.DataMapper.ISqlMapper”隐式转换为“IBatisNet.DataMapper.SqlMapper”。该如何处

2012-02-12 
无法将类型“IBatisNet.DataMapper.ISqlMapper”隐式转换为“IBatisNet.DataMapper.SqlMapper”。用Editplus整

无法将类型“IBatisNet.DataMapper.ISqlMapper”隐式转换为“IBatisNet.DataMapper.SqlMapper”。
用Editplus整理编辑完IBatisNet官网的例子Tutorial-1.2.1,使用IBatisNet.DataMapper-bin-1.5.1类库。编译命令如下:
-----------------------------------------------------
csc   /r:../bin/IBatisNet.DataMapper.dll   /r:../bin/nunit.framework.dll   /r:../bin/IBatisNet.Common.dll     /target:library   /out:iBatisTutorial.Model.dll   *.cs
-------------------------------------------------------
错误内容:
------------------------------------------------------

无法将类型“IBatisNet.DataMapper.ISqlMapper”隐式转换为“IBatisNet.DataMapper.SqlMapper”。
存在一个显式转换(是否缺少强制转换?)

---------------------
源码如下:

Helper.cs
---------------------------------------------
using   IBatisNet.DataMapper;

namespace   iBatisTutorial.Model
{
///   <summary>
///   Base   class   for   Helper   objects   (*Helper).  
///   Provides   shared   utility   methods.
///   </summary>
public   abstract   class   Helper
{
public   SqlMapper   Mapper   ()
{
return   IBatisNet.DataMapper.Mapper.Instance   ();
}
}
}
------------------------------------
  PersonHelper.cs
------------------------------------
using   System.Collections;

namespace   iBatisTutorial.Model
{
///   <summary>
///   Helper   class   for   Person   entities.
///   </summary>
public   class   PersonHelper   :   Helper
{
public   Person   Select   (int   id)
{
return   (Person)   Mapper   ().QueryForObject   ( "Select ",   id);
}

public   IList   SelectAll   ()
{
return   Mapper   ().QueryForList   ( "Select ",   null);
}

public   int   Insert   (Person   person)
{
Mapper   ().Insert   ( "Insert ",   person);
//   Insert   is   designed   so   that   it   can   return   the   new   key
//   but   we   are   not   utilizing   that   feature   here
return   1;
}

public   int   Update   (Person   person)
{
return   Mapper   ().Update   ( "Update ",   person);
}

public   int   Delete   (int   id)
{
return   Mapper   ().Delete   ( "Delete ",   id);
}

}
}
------------------------------------
Helpers.cs
------------------------------------
namespace   iBatisTutorial.Model
{
///   <summary>
///   Singleton   "controller "   for   Helper   classes.
///   </summary>
public   class   Helpers
{
private   static   volatile   PersonHelper   _PersonHelper   =   null;

public   static   PersonHelper   Person   ()
{
if   (_PersonHelper   ==   null)
{
lock   (typeof   (PersonHelper))
{
if   (_PersonHelper   ==   null)   //   double-check
_PersonHelper   =   new   PersonHelper   ();
}
}
return   _PersonHelper;


}
}
}
------------------------------------
Person.cs
------------------------------------
using   System;

namespace   iBatisTutorial.Model
{

///   <summary>
///   Business   object   representing   a   Person  
///   entity   in   our   problem   domain.  
///   </summary>
public   class   Person
{
/*
private   string   _Property;
public   string   Property
{
get   {   return   _Property;   }
set   {   _Property   =   value;   }
}
*/

private   int   _Id;
public   int   Id
{
get   {   return   _Id;   }
set   {   _Id   =   value;   }
}

private   string   _FirstName;
public   string   FirstName
{
get   {   return   _FirstName;   }
set   {   _FirstName   =   value;   }
}

private   string   _LastName;
public   string   LastName
{
get   {   return   _LastName;   }
set   {   _LastName   =   value;   }
}

private   DateTime   _BirthDate;
public   DateTime   BirthDate
{
get   {   return   _BirthDate;   }
set   {   _BirthDate   =   value;   }
}

private   double   _WeightInKilograms;
public   double   WeightInKilograms
{
get   {   return   _WeightInKilograms;   }
set   {   _WeightInKilograms   =   value;   }
}

private   double   _HeightInMeters;
public   double   HeightInMeters
{
get   {   return   _HeightInMeters;   }
set   {   _HeightInMeters   =   value;   }
}

}
}
------------------------------------
请各位大虾帮帮忙。小弟感激不尽!
------------------------------------
------------------------------------



[解决办法]
return IBatisNet.DataMapper.Mapper.Instance ();
应该是这里的问题吧。Mapper 属性是SqlMapper类型的,你查一下 Instance ()返回的类型,应该是一个接口类型ISqlMapper,把这句改成:
return (SqlMapper)IBatisNet.DataMapper.Mapper.Instance ();

热点排行