前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在asp.net页面上得到Castle容器的实例

在asp.net页面上得到Castle容器的实例

作者头像
张善友
发布2018-01-19 11:45:32
8750
发布2018-01-19 11:45:32
举报
文章被收录于专栏:张善友的专栏

在项目中使用Castle IOC容器,Asp.net程序中如何得到Castle容器内。

可以如下实现:

1、Gloabal实现接口IContainerAccessor

代码语言:js
复制
public class Global : System.Web.HttpApplication, IContainerAccessor
  {
 /// <summary>
 /// 必需的设计器变量。
 /// </summary>
  private System.ComponentModel.IContainer components = null;
  private static WindsorContainer container;
 
         public Global()
 {
  InitializeComponent();
 } 
 protected void Application_Start(Object sender, EventArgs e)
 {
  container = new MyContainer(new XmlInterpreter("app_config.xml"));
 } 
  protected void Session_Start(Object sender, EventArgs e)
 {
 }
……
 protected void Application_End(Object sender, EventArgs e)
 {
  container.Dispose();
 } 
  #region IContainerAccessor implementation
 public IWindsorContainer Container
 {
  get { return container; }
 }
  
}

2、使用如下类来获取容器实例,这段代码来自Castle.MVC

代码语言:js
复制
 /// <summary>
 /// Uses the HttpContext and the <see cref="IContainerAccessor"/> 
 /// to access the container instance.
 /// </summary>
 public abstract class ContainerWebAccessorUtil
 {
 /// <summary>
 /// 从application中获取一个容器实例
 /// </summary>
 /// <returns>返回一个 IWindsorContainer</returns>
 public static IWindsorContainer ObtainContainer()
 {
  IContainerAccessor containerAccessor = 
  HttpContext.Current.ApplicationInstance as IContainerAccessor; 
 if (containerAccessor == null)
 {
  throw new ApplicationException("你必须在HttpApplication中实现接口 IContainerAccessor 暴露容器的属性”);
 } 
  IWindsorContainer container = containerAccessor.Container; 
 if (container == null)
 {
  throw new ApplicationException("HttpApplication 得不到容器的实例");
 }
  return container;
 }
 } 

3、在具体的用户控件,页面的后置代码中通过ContainerWebAccessorUtil. ObtainContainer()获取容器实例。当然如果使用Castle.MVC,MVC框架也是这样用的,自己就不要这么麻烦了,可以将这个写在页面和控件的基类中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档