工厂 调用Unity Application Block 通过XML配置文件映射读取数据层方法
导入using System.Web.Security;
using System.Configuration;
using System.Web.SessionState;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
命名空间
Namespace WEB
{
public class FactoryApplication : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
this.registerControllerFactory();
}
protected void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码
}
protected void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
}
protected void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代码
}
protected void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。
}
private void registerControllerFactory()
{
IUnityContainer container=new UnityContainer();
UnityConfigurationSection section=null;
System.Configuration.Configuration config=null;
ExeConfigurationFileMap map=new ExeConfigurationFileMap();
map.ExeConfigFilename=GetMapPath("/Config/IDAL.Configuration.xml");
config=ConfigurationManager.OpenMappedExeConfiguration(map,ConfigurationUserLevel.None);
section=(UnityConfigurationSection)config.GetSection(unity);
section.Containers.Default.Configure(container);
Application.Add("container",container);
}
#region 获得当前绝对路径
/// <summary>
/// 获得当前绝对路径
/// </summary>
/// <param name="strPath">指定的路径</param>
/// <returns>绝对路径</returns>
private static string GetMapPath(string strPath)
{
if (HttpContext.Current != null)
{
return HttpContext.Current.Server.MapPath(strPath);
}
else //非web程序引用
{
strPath = strPath.Replace("/", "\\");
if (strPath.StartsWith("\\"))
{
strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
}
return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
}
}
#endregion
}
}
2、修改Web项目的Global.asax文件 如下
<%@ Application Inherits="WEB.FactoryApplication" Language="C#" %>
3、在web项目中添加Config文件夹并给它添加IDAL.Configuration.xml文件
格式如下
<?xml version="1.0" encoding="utf-8" ?>
<!--DAL对象映射-->
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity>
<typeAliases>
<typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<typeAlias alias="IUserInfor" type="IDAL.IUserInfor, IDAL" />
<typeAlias alias="UserInfor" type="DAL.UserInfor, DAL" />
<typeAlias alias="IRoles" type="IDAL.IRoles, IDAL"/>
<typeAlias alias="Roles" type="DAL.Roles, SDAL" />
</typeAliases>
<containers>
<container>
<types>
<type type="IUserInfor" mapTo="UserInfor" name="">
<lifetime type="singleton" />
</type>
<type type="IRoles" mapTo="Roles" name="">
<lifetime type="singleton" />
</type>
</types>
</container>
</containers>
</unity>
</configuration>
4、创建工厂接口调用unity映射
导入using Microsoft.Practices.Unity;命名空间
namespace FactoryLibrary
{
/// <summary>
/// 创建对象工厂
/// </summary>
public class Factory
{
/// <summary>
/// 创建数据层对象
/// </summary>
/// <typeparam name="TInterface">接口</typeparam>
/// <returns></returns>
public static TInterface CreateDAL<TInterface>()
{
IUnityContainer container = GetConatiner();
return container.Resolve<TInterface>();
}
public static IUnityContainer GetConatiner()
{
return (IUnityContainer)System.Web.HttpContext.Current.Application["container"];
}
}
}
5、创建Model层 UserInfor、Roles
6、创建IDAL层 IUserInfor、IRoles
7、创建DAL层 UserInfor、Roles
8、创建BLL层 UserInfor、Roles
实现接口映射
IDAL.IUserInfor iUserInfor = FactoryLibrary.Factory.CreateDAL<IDAL.IUserInfor>();
IDAL.IRoles iRoles = FactoryLibrary.Factory.CreateDAL<IDAL.IRoles>();
原文链接:http://www.cnblogs.com/lonelyofsoul/archive/2012/03/21/unityapplicationblock.html
转载于:https://www.cnblogs.com/lonelyofsoul/archive/2012/03/21/unityapplicationblock.html
工厂 调用Unity Application Block 通过XML配置文件映射读取数据层方法相关推荐
- Unity Application Block 1.0系列文章
Unity Application Block (Unity) 是微软 Patterns & Practices 团队开发的一个轻量级.可扩展的依赖注入容器,有助于构建松散耦合的系统.它支持 ...
- Unity Application Block 1.2 学习笔记 [转]
昨天花了一天时间,把IOC/DI的相关文章以及Unity相关的一些文章基本在园子里搜了个遍 先给出几篇不错的文章链接: Unity Application Block官方网址 http://www.c ...
- Unity Application Block 1.2 学习笔记(zhuan)
昨天花了一天时间,把IOC/DI的相关文章以及Unity相关的一些文章基本在园子里搜了个遍 先给出几篇不错的文章链接: Unity Application Block官方网址 http://www.c ...
- Unity Application Block 1.2 学习笔记
昨天花了一天时间,把IOC/DI的相关文章以及Unity相关的一些文章基本在园子里搜了个遍 先给出几篇不错的文章链接: Unity Application Block官方网址 http://www.c ...
- Unity Application Block 发布
今天Unity Application Block提前发布了,翻译一下下文纪念一下. 顺便推荐看看我整理的Castle方面的资料开源框架:Castle,这有助于你理解和使用Unity Applicat ...
- 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2
微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2,具体可参看InfoQ的新闻http://www.infoq.com/cn/n ...
- Unity Application Block 3月12 发布的版本
3月12日,Unity 又发布了正式发布之前的版本,这个版本提供了安装程序.并且提供了一个依赖注入在实现方式:Setter injection 的配置API.之前发布的版本,属性注入需要用[Depen ...
- Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)
DOM4J解析XML文件 dom4j是一个Java的XML API,是jdom的升级产品,用来读写XML文件.另外对比其他API读写XML文件,dom4j是一个十分优秀的JavaXML API,具有性 ...
- ajax 通过json xml文件,php+Ajax处理xml与json格式数据的方法示例
本文实例讲述了php+Ajax处理xml与json格式数据的方法.分享给大家供大家参考,具体如下: 一.ajax如何处理xml数据格式 register.php 只需修改上一篇<php+Ajax ...
最新文章
- pycharm波浪线检查去掉
- 百分点集团发布中国首个行业AI决策系统产品Deep Matrix
- 同行评审以权谋私,让投稿人多引用自己文章,爱思唯尔将彻查此事
- 赠书:Redis 深度历险:核心原理与应用实践
- 查看tensorflow pb模型文件的节点信息
- 一步步实现:JPA的基本增删改查CRUD(jpa基于hibernate)
- Android 使用RadioButton+Fragment构建Tab
- Leet Code OJ 2. Add Two Numbers [Difficulty: Medium]
- React之mockjs+sass+生命周期函数
- 面试精讲之面试考点及大厂真题 - 分布式专栏 19 系统中的降级熔断设计
- 数据库学习--wildfly配置postgreSQL数据源
- JIRA数据库的迁移,从HSQL到MYSQL/Oracle
- 如何在js中实现html语言,如何使用脚本标签将JavaScript插入HTML
- Civil3D绘制路线
- brctl 命令详解
- TCL语言语法简介(上)
- “计算机组成原理”视频资料(加上全集链接啦)
- 计算机远程桌面连接软件,windows7远程桌面连接软件 提取自最新windows7,可运行于XP...
- ccleaner激活后又要注册_ccleaner如何激活? ccleaner注册激活图文步骤
- armbian 下载加速
热门文章
- C-free在编写代码的过程中遇到方向键失灵,回车键失灵,换行失灵,但是可以正常输入的解决办法!!!!!
- Python中变量判断
- 翁恺老师C语言学习笔记(十)指针_指针与数组
- 美元指数DXY短线走高10逾点,现报90.77
- 第一章 —— 简单工厂模式(节选自:《大话设计模式》)
- 第18章 Redis数据结构常用命令
- notepad++,vim驼峰命名与下划线的互相转换
- SQL SERVER数据类型与C#数据类型对照表
- 关于使用墙外安卓应用
- VS2010 + OpenCV2.3配置 ; 在VS2010下安装配置OpenCV2.3 ; 全程截图,绝对能配置好,不能的留言!...