工厂模式 中 用到 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” 还引用了其他程序集,需要复制到当前目录下?