工厂模式 中 用到 Assembly.Load 这个方法来加载 程序集
提示 本人没有找到
假如本人用 接口 那个 程序集 就可以找到
使用 实现接口 的那个程序集 就提示本人找不到
提示 本人没有找到
假如本人用 接口 那个 程序集 就可以找到
使用 实现接口 的那个程序集 就提示本人找不到
using Hairdressing.IDAL.Sys ; using System.Reflection; namespace Hairdressing.DALFactory { public class DataAccessFactory { private static readonly string dbType = "Hairdressing.SqlServerDAL"; #region 系统管理 /// <summary> /// 创建用户信息 /// </summary> /// <returns></returns> public static IUserInfoService CreateUserInfoService() { string className = dbType + ".Sys.UsersInfoService"; return (IUserInfoService)Assembly.Load(dbType).CreateInstance(className); } #endregion } }
以上是工厂类的方法
图片是项目的截图
为什么 加载 dal 层 的 程序集 不能加载
名称什么的也没错 就是提示本人 filenotfound 异常 没有找到文件
解决方案
10
Assembly.Load(assemblyName);
assemblyName:程序集名称的长格式。
msdn 示例 https://msdn.microsoft.com/zh-cn/library/ky3942xh(v=vs.110).aspx
assemblyName:程序集名称的长格式。
msdn 示例 https://msdn.microsoft.com/zh-cn/library/ky3942xh(v=vs.110).aspx
string longName = "system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; Assembly assem = Assembly.Load(longName);
10
你直接使用 Hairdressing.SqlServerDAL 中的某个类,能否访问?
10
当然假如你直接使用 Hairdressing.SqlServerDAL 中的某个类结果根本编译时就错误,那么可以查一下引用。假如你根本没有引用,而又想 Load,那么你应该查一下你的编译“配置管理器”当中有没有真正(打勾)去生成dll文件。假如配置生成,那么目标文件生成到哪里了?
不过你这种解决方案,应该直接引用 Hairdressing.SqlServerDAL。根本不用动态加载它。
不过你这种解决方案,应该直接引用 Hairdressing.SqlServerDAL。根本不用动态加载它。
10
能否 “Hairdressing.SqlServerDAL” 还引用了其他程序集,需要复制到当前目录下?