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

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 国产成人A在线观看视频免费| a级毛片在线免费看| 大地资源在线观看免费高清| 亚洲伊人久久大香线蕉影院| 亚洲一区二区免费视频| 亚洲综合自拍成人| 亚洲视频免费在线播放| 亚洲综合色丁香麻豆| 在线视频免费观看爽爽爽| 亚洲制服丝袜第一页| 国产视频精品免费| 免费无遮挡无遮羞在线看| 国产亚洲?V无码?V男人的天堂| 国产在线精品一区免费香蕉| 久久久亚洲精品视频| 4hu四虎最新免费地址| 亚洲成a人片在线不卡一二三区 | 在线免费观看视频你懂的| 成人婷婷网色偷偷亚洲男人的天堂| 免费成人在线观看| 99精品视频在线观看免费| 亚洲日本精品一区二区| 国产啪精品视频网免费| 色欲aⅴ亚洲情无码AV| 亚洲毛片αv无线播放一区| 18禁美女裸体免费网站| 亚洲色欲啪啪久久WWW综合网| 亚洲国产精品专区在线观看| 久草福利资源网站免费| 亚洲色偷精品一区二区三区| 亚洲女同成人AⅤ人片在线观看| 久久久久久AV无码免费网站| 亚洲熟女综合色一区二区三区| 亚洲男人第一无码aⅴ网站 | 日韩人妻无码免费视频一区二区三区| 免费无遮挡无遮羞在线看| 亚洲人成网www| 四虎影视免费永久在线观看| 久久aⅴ免费观看| 色多多免费视频观看区一区| 亚洲综合日韩中文字幕v在线|