<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://m.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://m.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.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 国产免费观看a大片的网站| 久久久久久精品成人免费图片| 天天干在线免费视频| 亚洲欧洲另类春色校园小说| 国产免费无遮挡精品视频| 亚洲xxxx18| 最新猫咪www免费人成| 国产亚洲人成网站观看| 久久九九免费高清视频| 国产午夜亚洲精品理论片不卡 | 亚洲性久久久影院| 免费的黄色网页在线免费观看| 国产男女性潮高清免费网站 | 国产亚洲AV夜间福利香蕉149 | 一级成人a做片免费| 免费a在线观看播放| 亚洲一区动漫卡通在线播放| 国产卡二卡三卡四卡免费网址| 亚洲欧美日韩综合久久久久| 国产精品四虎在线观看免费| 亚美影视免费在线观看| 久久夜色精品国产亚洲AV动态图| 久久国产精品免费专区| 丝袜熟女国偷自产中文字幕亚洲| a在线观看免费网址大全| 久久综合亚洲鲁鲁五月天| 国产精品美女午夜爽爽爽免费| 久久人午夜亚洲精品无码区| 亚洲中文字幕无码中文字在线| 99爱免费观看视频在线| 亚洲男人的天堂久久精品| 免费人成网站在线播放| 最新国产乱人伦偷精品免费网站| 91亚洲国产成人久久精品| 国产青草视频免费观看97 | 亚洲成色在线影院| 在线观看免费宅男视频| 高清永久免费观看| 亚洲天堂电影在线观看| 亚洲精品成人网久久久久久| 最近免费中文字幕mv电影|