<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blogjava's web log

    blogjava's web log
    ...

    Castle研究-第一個Castle程序


    ?

    Castle:About

    From Castle

    Castle was born from the Apache Avalon project as an attempt to build a very simple inversion of control container. The overall design is the result of more than a year in contact with masters of the Avalon land like Carsten Ziegeler, Leo Sutic, Leo Simons and Berin Loritsch to name a few.

    After several discussions about what a useful container must solve, Castle's first draft was created. Several changes have taken place before reaching its current form.

    However, Castle had a more ambitious agenda. Tools like DynamicProxy and the Management Extensions were used by several projects and a proper home to support those users and build a community was necessary. Along the same lines, these tools had nothing in common with Avalon's mission, so we had to find a more suitable home for them.



    Castle:Rationale

    From Castle

    An empty space lies in the open source community between those who happen to use CLI (Common Language Infrastructure) running on Windows (.Net Framework from MS) and|or Linux (Mono). This empty space represents the lack of a model for how to build a Good Application (tm).

    Of course there are several factors that contribute to creating a Good Application, and from our standpoint one them is good architecture. Good architecture is accomplished by having cohesion, single classes with well-defined responsibilities, orthogonallity and loosely coupled components (providing reusability among different projects).

    From our experience, inversion of control can help even an inexperienced team to accomplish good architecture. However, the usage of this design principle is a matter of taste, and people should not feel obligated to use it.

    Castle's goal is to provide a set of standalone tools and an inversion of control container implementation in order to create a meeting point for these tools.



    新建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.tkk7.com/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.tkk7.com/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


    http://www.codeproject.com/cs/design/introducingcastle.asp



    posted on 2006-07-24 16:13 record java and net 閱讀(1533) 評論(0)  編輯  收藏 所屬分類: dot net相關Spring

    導航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動態語言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲avav天堂av在线不卡| 在线免费不卡视频| 亚洲视频在线一区二区| 亚洲国产精品嫩草影院| 亚洲免费网站观看视频| 亚洲伦理中文字幕| 国产成人精品免费视| 亚洲色欲或者高潮影院| 最近中文字幕无免费| 亚洲色四在线视频观看| 91精品国产免费| 亚洲色成人网一二三区| 99久久久精品免费观看国产| 亚洲精品中文字幕无乱码| 1024免费福利永久观看网站| 亚洲人成人网毛片在线播放| 妞干网免费视频在线观看| 精品成人一区二区三区免费视频| 日韩亚洲国产二区| 成人无码精品1区2区3区免费看| 国产亚洲精品激情都市| 一个人免费视频观看在线www| 亚洲AV色香蕉一区二区| 四虎在线成人免费网站| 亚洲熟妇自偷自拍另欧美| 国产jizzjizz免费视频| 中文字幕免费在线视频| 激情内射亚洲一区二区三区| 18禁无遮挡无码网站免费| 国产精品亚洲综合网站| 国产亚洲综合网曝门系列| 最近免费中文字幕mv电影| 亚洲熟妇丰满xxxxx| 亚洲裸男gv网站| 99re这里有免费视频精品| 亚洲人成小说网站色| 亚洲一区二区三区乱码A| 中文字幕免费高清视频| 亚洲欧洲免费无码| 亚洲精品无码不卡在线播放HE| 3d动漫精品啪啪一区二区免费 |