机房登录问题—未能加载文件

问题


解决方案

    第一次遇到错误时看了一眼下面的“温馨提示”:使用相对路径时,请确保当前目录是正确的;于是在这条提示的关怀下,果断选择了一个关于dll路径问题的博客扎了进去,然后顺利解决(我的问题是没有设置UI层下bin文件夹需要的路径为待引用程序集的路径引起的)。
后来总结了下出现这个问题的原因:一、反射的调用代码书写错误;二、反射的加载路径设置不正确。

代码错误

    反射的调用应该是:Assembly.Load("程序集").CreateInstance("命名空间类")

代码举例

<span style="font-family:KaiTi_GB2312;font-size:24px;">Public Class LoginFactory
    Private Shared ReadOnly AssemblyName As String = "DAL"       '数据库程序集名称,命名空间DAL
    Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DB")

    Public Function CreateIUser() As LoginIUserInfo
        Dim classname As String = "DAL" + "." + strDB + "LoginDAL"        '需要实例化的D层的名称
        Dim IUser As LoginIUserInfo
        'CType 函数将返回表达式显示的转换为指定的数据类型、对象、结构、类或者接口后的结果

        IUser = CType(Assembly.Load(AssemblyName).CreateInstance(classname), LoginIUserInfo)       '返回LoginIUserInfo
        Return IUser
    End Function
End Class</span>

    PS:上面代码来自我的博客《机房重构之七层登录》;其中的变量AssemblyName即为所谓的程序集;classname即为所谓的命名空间类

路径问题

    因为反射的原理时需要加载程序集dll在UI层下的bin文件夹下的内容,所以在上面的代码书写问题中提到的程序集是需要读取UI层(有关UI层请参考我的另一篇博客《机房重构之七层登录》)文件夹bin中对应的dll;因此我们需要保证UI层bin文件夹下的路径有需要的程序集的路径才能让程序顺利运行。

总结

    反射的原理除了上面提到的一点,其他的还是很陌生,后续学习跟进;一个错误,是一次痛苦,也是一次幸福。
感谢您的宝贵时间,祝生活愉快,谢谢!
                                         —joker
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值