错误提示:无法将类型为“BM_SqlDAL.Dept”的对象强制转换为类型“部门管理.BM_IDAL”。Dept 这个类继承类 接口 BM_IDAL ----都是公共的
BM_IDAL中有一个方法GetList();
od是通过反射“BM_SqlDAL.Dept”dll 得到的 Object对象 ((BM_IDAL)od).GetList(); 提示上面的错
BM_IDAL中有一个方法GetList();
od是通过反射“BM_SqlDAL.Dept”dll 得到的 Object对象 ((BM_IDAL)od).GetList(); 提示上面的错
1楼没看清你的od是object
object 貌似没有GetList方法吧
提示这个错误应该是继承关系错误..
注意,你检查一下UI层是否引用了项目中所有的DLL?如果少了DLL引用就会出现你这个问题.
{
public interface BM_IDAL
{
/// <summary>
/// 获得数据列表
/// </summary>
List<BM_Model> GetList();
}
}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
using 部门管理;
namespace BM_SqlDAL
{
public class Dept : BM_IDAL
{ #region BM_IDAL 成员 /// <summary>
/// 获得根节点
/// </summary>
/// <returns>部门集合</returns>
public List<BM_Model> GetList()
{ String sql = "select DeptId,DeptName FROM Dept where DeptFatherId=0";
DataSet List= DbHelperSQL.Query(sql); /////////////////////////// return null;
} #endregion
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、namespace 部门管理
{
public class BM_BLL
{ PluginsDALFactory.PluginsDALFactory DATE = new PluginsDALFactory.PluginsDALFactory("BM_DAL");
public BM_BLL() {
}
/// <summary>
/// 获得根节点数据列表
/// </summary>
public List<BM_Model> GetList()
{
object od=DATE.CreateDAL("Dept");
return ((BM_IDAL)od).GetList();
} }
}。。namespace PluginsDALFactory
{
public class PluginsDALFactory
{
private static string AssemblyPath;
public PluginsDALFactory( string DALname)
{
AssemblyPath = ConfigurationManager.AppSettings[DALname];
}
// Assembly Assly; /// <summary>
/// 反射DAL
/// </summary>
/// <param name="AssemblyPath">DAL路径</param>
/// <param name="classNamespace">类全称</param>
/// <returns></returns>
private static object CreateObject(string AssemblyPath, string classNamespace)
{ Assembly Assly = Assembly.Load(AssemblyPath);
object objType = Assly.CreateInstance(classNamespace);
return objType; }
/// <summary>
/// 创建dept数据层接口
/// </summary>
public object CreateDAL(string DALname)
{ string ClassNamespace = AssemblyPath + "." + DALname;
object objType = CreateObject(AssemblyPath, ClassNamespace);
return objType;
}
}
}
object od=DATE.CreateDAL("Dept");
Type _OdType =od.GetType();
Type[] _InterfacesList = _OdType.GetInterfaces();
return ((BM_IDAL)od).GetList(); 有可能引用的实例和接口不对
acqy 说的我试了一下,的确是这样