Castle研究-第一个Castle程序

 最近项目中用到Castle ,用的第一感觉就是和spring 及象。。

新建c#工程

添加对Dll的引用

Castle.DynamicProxy.dll

Castle.MicroKernel.dll

Castle.Model.dll

Castle.Windsor.dll


新建 接口
namespace  first.Castle
{
  
public   interface Interface1
    
{
        
void add();
        
void del();
    }

}

新建实现类

namespace  first.Castle
{
    
public class ClassTest:Interface1
    
{
        
public void add()
        
{
           System.Diagnostics.Debug.Assert(
false,"add");
        }


        
public void del()
        
{
           System.Diagnostics.Debug.Assert(
false,"del");
        }

    }

}



读取配置

using  System;
using  System.Diagnostics;
using  Castle.MicroKernel;
using  Castle.Windsor;

//http://www.blogjava.net/wujun
namespace  first.Castle
{
    
public class MindDumpContainer
    
{
        
private static MindDumpContainer _singleMindDupContainer = null;
        
private static WindsorContainer _windsorContainer = null;

        
private MindDumpContainer()
        
{
            _windsorContainer 
=
                
new WindsorContainer("配置文件路径 windsor.config", AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

            
if (_windsorContainer == null)
            
{
                
throw new Exception("Failed initialize WindsorContainer.");
            }

        }

//单态
        public static MindDumpContainer GetInstance()
        
{
            
if (_singleMindDupContainer == null)
            
{
                _singleMindDupContainer 
= new MindDumpContainer();
            }

            
return _singleMindDupContainer;
        }


        
/// <summary>
        
/// Get contained object by its name
        
/// </summary>
        
/// <param name="key">key of the object when registered</param>
        
/// <returns>the object</returns>

        public object GetObject(string key)
        
{
            Debug.Assert(_windsorContainer 
!= null);

            
try
            
{
                
return _windsorContainer[key];
            }

            
catch (ComponentNotFoundException ex)
            
{
                
throw new Exception(string.Format("No componet with the passed key: {0}", key), ex);
            }

        }


        
public object GetObject(Type type)
        
{
            Debug.Assert(_windsorContainer 
!= null);
            
try
            
{
                
return _windsorContainer[type];
            }

            
catch (ComponentNotFoundException ex)
            
{
                
throw new Exception(
                    
"error");
            }

        }

    }

}


配置文件

<? xml version="1.0" encoding="utf-8"  ?>
<!--  This configuration file contains castle windsor config file, including facilities and components  -->
< configuration >
  
< configSections >
    
< section  name ="log4net"  type ="log4net.Config.Log4NetConfigurationSectionHandler,log4net"   />
  
</ configSections >
//http://www.blogjava.net/wujun
  
< components >
//service是配置接口 逗号后面是命名空间
//type 是具体的实现 逗号后面是命名空间
    
< component  id ="Classtest"  service ="first.Castle.Interface1,first.Castle"  type ="first.Castle.ClassTest,first.Castle"   />
</ components >

</ configuration >

调用 只要
 Interface1 iface = (Interface1) MindDumpContainer.GetInstance().GetObject(typeof(Interface1));
  iface.add();

就可以了 。。

和spring 太象了 。。

 
官方网站:
http://www.castleproject.org/index.php/Main_Page

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值