你真的了解Ioc與AOP嗎?(2)

2021-04-06 17:05:37 字數 1407 閱讀 3038

本部分示例**請參考"src/step3-reflection"目錄

<?xml version="1.0" encoding="utf-8" ?>

從中我們可以看出,我們實現了乙個iocincsharp.confighandler類,用來處理配置檔案中iocincsharp/objects結點中的內容。confighandler類將根據該結點下的內容處理並建立一configinfo物件(關於configinfo、objectinfo以及propertyinfo的**可自行檢視源**,這裡就不再贅述)。confighandler類的**實現如下:

using system;

using system.configuration;

using system.xml;

namespace iocincsharp

cfginfo.objects.add(info);

}

return cfginfo;

}

}

}通過confighandler的解析,我們最終得到乙個configinfo例項,factory就是根據這個例項中所包含的配置資訊,利用反射技術對所需物件生成並組裝的。sayhellofactory的**如下:

using system;

using system.io;

using system.configuration;

using system.reflection;

namespace iocincsharp

);assembly.loadfile()

用於將外部檔案裝載進來;assembly.createinstance()

根據裝載進來的程式集建立一指定型別的物件;t.invokemember(prop.propertyname, ........bindingflags.setproperty, null, o, new object )

利用反射機制對建立出來的物件設定屬性值。

using system;

namespace iocincsharp

}

}更改為iocincsharp.enhellogenerator

,看看是否輸出內容由中文變為了英文。這便是「注入」的效果。

從上面這個例子我們可以看出,通過自定義配置檔案和.net中的reflection技術,我們自己就可以開發ioc應用,根據配置檔案的資訊自行組裝相應的物件。但是reflection程式設計的技術門檻還是比較高的,並且在實際應用中配置檔案的格式、handler的設計都不是象上面**那樣的簡單。不過幸好我們現在有很多的ioc容器可供選擇,它們都提供了完整的依賴注入方式,並且比自己寫**更加成熟、更加穩定。使用這些框架可以讓程式設計師在三兩行**裡完成「注入」工作。在我們下乙個案例中,我們將使用spring.net實現依賴注入。我們會發現僅僅新增幾行**並更改一下配置檔案就可輕鬆實現依賴注入。(待續)

你真的了解Ioc與AOP嗎?(4)

本部分示例 請參考 src step4 目錄 如果使用remoting技術對hellogenerator進行改造,使其具有分布式遠端訪問能力,那麼在不使用ioc技術的情況下,我們將會作出如下調整 如果要讓某個物件具有分布式的功能,必須使其繼承自marshalbyrefobject,這樣才可以具有遠端...

你真的了解Ioc與AOP嗎?(4)

你真的了解ioc與aop嗎?1 你真的了解ioc與aop嗎?2 你真的了解ioc與aop嗎?3 你真的了解ioc與aop嗎?4 你真的了解ioc與aop嗎?5 本部分示例 請參考 src step4 目錄 如果使用remoting技術對hellogenerator進行改造,使其具有分布式遠端訪問能力...

你真的了解Java嗎?

三目運算子規則 如果第二個和第三個運算元具有相同的型別,那麼它就是條件表示式的類 型。換句話說,你可以通過繞過混合型別的計算來避免 煩。如果乙個運算元的型別是 t,t 表示 byte short 或 char,而另乙個運算元是乙個 int 型別的常量表示式,它的值是可以用型別 t 表示的,那麼條件表...