1、假设我们来做一个用户登录的业务
  那么我们可以现在IDAL项目中定义的的接口IOu_UserInfoDAL,注意是部分类partial,为了方便管理,把这些扩展的部分接口都统一放到文件夹ExtensionIDAL中进行管理,注意命名空间要和之前的部分接口一致。
  using Model;
  namespace IDAL
  {
  public partial interface IOu_UserInfoDAL
  {
  Ou_UserInfo GetUserInfoByName(string loginName);
  }
  }
  2、DAL项目中,新建文件夹ExtensionDAL,文件夹下面新建部分类Ou_UserInfoDAL
  using IDAL;
  using Model;
  namespace DAL
  {
  public partial class Ou_UserInfoDAL : IOu_UserInfoDAL
  {
  public Ou_UserInfo GetUserInfoByName(string loginName)
  {
  return base.GetListBy(x => x.uLoginName == loginName).FirstOrDefault();
  }
  }
  }
  3、IBLL项目新建文件夹ExtensionIBLL,文件夹下面新建IOu_UserInfoBLL接口
  using Model;
  namespace IBLL
  {
  public partial interface IOu_UserInfoBLL
  {
  Ou_UserInfo Login(string strName, string strPwd);
  }
  }
  BLL项目中新建文件夹ExtensionBLL,文件夹下面新建Ou_UserInfoBLL类
  using Model;
  using IBLL;
  namespace BLL
  {
  public partial class Ou_UserInfoBLL : IOu_UserInfoBLL
  {
  /// <summary>
  /// 登陆
  /// </summary>
  /// <param name="strName"></param>
  /// <param name="strPwd"></param>
  /// <returns></returns>
  public Ou_UserInfo Login(string strName, string strPwd)
  {
  //1.调用业务层方法 根据登陆名查询
  Ou_UserInfo usr = base.GetListBy(u => u.uLoginName == strName).FirstOrDefault();
  //2.判断是否登陆成功
  return null;
  }
  }
  }
  4、关于spring.net的使用请参考:17、ASP.NET MVC入门到精通——Spring.net入门
  我们下载下来spring.net包,然后把Spring.Core.dll 、Common.Logging.dll拷贝过来。在Web项目中添加一个Lib文件夹用来存放第三方的dll。
  DI项目中,添加这两个dll的引用,然后新建类SpringHelper
  using Spring.Context;
  using Spring.Context.Support;
  namespace DI
  {
  public static class SpringHelper
  {
  #region 1.0 Spring容器上下文 -IApplicationContext SpringContext
  /// <summary>
  /// Spring容器上下文
  /// </summary>
  private static IApplicationContext SpringContext
  {
  get
  {
  return ContextRegistry.GetContext();
  }
  }
  #endregion
  #region 2.0 获取配置文件 配置的 对象 +T GetObject<T>(string objName) where T : class
  /// <summary>
  /// 获取配置文件 配置的 对象
  /// </summary>
  /// <typeparam name="T"></typeparam>
  /// <param name="objName"></param>
  /// <returns></returns>
  public static T GetObject<T>(string objName) where T : class
  {
  return (T)SpringContext.GetObject(objName);
  }
  #endregion
  }
  5、修改Web项目中的Web.config文件,添加Spring配置
  <!-- Spring 的配置 -->
  <sectionGroup name="spring">
  <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
  <!-- 支持在 web.config 中定义对象 -->
  <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
  </sectionGroup>
  </configSections>
  <spring>
  <context>
  <resource uri="~/Config/objects.xml"/>
  </context>
  </spring>
  Web项目中创建一个名为 Config 的文件夹,以保存独立的配置文件
  <?xml version="1.0" encoding="utf-8" ?>
  <objects xmlns="http://www.springframework.net">
  <object id="Ou_UserInfo" type="BLL.Ou_UserInfo,BLL" singleton="false"></object>
  <object id="BLLSession" type="BLL.BLLSession,BLL" singleton="false"></object>
  <object id="DBSessFactory" type="DAL.DBSessionFactory,DAL"></object>
  </objects>
  修改BaseBLL.cs
  #region 数据仓储 属性 + IDBSession DBSession
  /// <summary>
  /// 数据仓储 属性
  /// </summary>
  public IDAL.IDBSession DBSession
  {
  get
  {
  if (iDbSession == null)
  {
  ////1.读取配置文件
  //string strFactoryDLL = Common.ConfigurationHelper.AppSetting("DBSessionFatoryDLL");
  //string strFactoryType = Common.ConfigurationHelper.AppSetting("DBSessionFatory");
  ////2.1通过反射创建 DBSessionFactory 工厂对象
  //Assembly dalDLL = Assembly.LoadFrom(strFactoryDLL);
  //Type typeDBSessionFatory = dalDLL.GetType(strFactoryType);
  //IDAL.IDBSessionFactory sessionFactory = Activator.CreateInstance(typeDBSessionFatory) as IDAL.IDBSessionFactory;
  //2.根据配置文件内容 使用 DI层里的Spring.Net 创建 DBSessionFactory 工厂对象
  IDAL.IDBSessionFactory sessionFactory = DI.SpringHelper.GetObject<IDAL.IDBSessionFactory>("DBSessFactory");
  //3.通过 工厂 创建 DBSession对象
  iDbSession = sessionFactory.GetDBSession();
  }
  return iDbSession;
  }
  }
  #endregion