最近项目中用到Castle ,用的第一感觉就是和spring 及象。。
新建c#工程
添加对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
新建c#工程
添加对Dll的引用
Castle.DynamicProxy.dll
Castle.MicroKernel.dll
Castle.Model.dll
Castle.Windsor.dll
新建 接口












新建实现类
























读取配置





























































































配置文件














调用 只要
Interface1 iface = (Interface1) MindDumpContainer.GetInstance().GetObject(typeof(Interface1));
iface.add();
就可以了 。。
和spring 太象了 。。
官方网站:
http://www.castleproject.org/index.php/Main_Page