【三层架构】之三层扩展七层

       哎,真心不想在这里写这篇博客,本来三层到七层顶多了也就用两天时间去分析,结果我用了将近四天,最后我都快崩溃了,还有好多问题都是同学帮我找出来的,真是很是汗颜呐!

      下面是我三层架构扩展成七层架构的UML包图:

【三层架构】之三层扩展七层_第1张图片


        之前看别人都是用的VB.NET版,我就觉得刚学习了C#语言,就先用C#版吧,结果倒好,两种语言编写的差距那叫个明显,出现了好多错误。在这里我就整理一个影响较大的问题吧。

关于抽象工厂方法,使用反射和配置未见引用为例:

反射代码:

        private static readonly string AssemblyName = "程序集名称";
        private static readonly string db = "Sqlserver";
        public static IUser CreateUser()
        {
            string className = AssemblyName + "." + db + "User";
            return (IUser)Assembly.Load(AssemblyName).CreateInstance("className");
        }

其中程序集名称可以通过程序集属性里查看,对于下面存在返回结果的一行中要根据所需要求来进行:

return (接口名)Assembly.Load("当前程序集名称").CreateInstance(“当前命名空间.要实例化的“类名”);


 
  这句代码一定要看清在哪里写程序集名称,哪里写命名空间名称。如果你没有认真听三层视频的话,你可能就不会犯一个错误:将程序集名称和命名空间分开,那样写那个都一样,就像上边的整个代码一样编码就行了。但是,注意,如果你认真听了,那上面说命名空间最好加上个”.“,那么,很不幸,你中招了,虽然方便了你写,但是也同样在一些问题上你就不知道该写哪一个好,可能就会输入同一个,然后就错了。所以还是要看清程序集名称和命名空间为好。 
  

在配置文件代码中,我开始没搞懂”DB“是干啥的,我只知道DB可以传值给db,然后我也就跟着写了,结果错了,原因在于课本上的实例化的类名区分这Sqlserver和Access,而我的没有区分,然后系统运行的时候找不到相对应的SqlserverUser,return返回为null,最后系统当然就不干了啊。

所以如果你没有区分那个数据库,则最好不要去使用配置文件,如果同课本一样区分了不同的数据库,那就才可以继续。






你可能感兴趣的:(VS)