反射 配置檔案 實現IOC容器

2021-07-07 03:17:16 字數 4379 閱讀 7650

ioc容器我們僅僅停留在知道上是不行的,我們要動手做印象對更深刻,那麼我給大家看乙個**,看看**中ioc容器的實現。

建立乙個類庫:

解決方案的類庫建立:

建立乙個實體類:user:

[csharp]view plain

copy

print?

"font-size:18px;"

>

using

system;  

using

system.collections.generic;  

using

system.text;  

namespace

spring.demo.model  

set}  

/// 

/// 姓名

/// 

private

string

_name;  

public

string

name  

set}  

/// 

/// 性別

/// 

private

string

_***;  

public

string

***  

set}  

/// 

/// 年齡

/// 

private

int_age;  

public

intage  

set}  

}  }

建立iusers的介面:

[csharp]view plain

copy

print?

"font-size:18px;"

>

using

system;  

using

system.collections.generic;  

using

system.text;  

namespace

spring.demo.service  

}  建立乙個實現iusers介面的實現類:

[csharp]view plain

copy

print?

"font-size:18px;"

>

using

system;  

using

system.collections.generic;  

using

system.text;  

using

spring.demo.service;  

using

spring.demo.model;  

namespace

spring.demo.compontext  

#region 獲取使用者資訊

public

string

getuserinfo()  

--->姓名:--->性別:--->年齡:"

,  user.oid,  

user.name,  

user.***,  

user.age);  

}  #endregion

}  }

建立測試類:

[csharp]view plain

copy

print?

"font-size:18px;"

>

using

itoo.library.core.aop;  

using

spring.context;  

using

spring.demo.service;  

using

system;  

using

system.collections.generic;  

using

system.configuration;  

using

system.linq;  

using

system.text;  

namespace

sping.demo.******test  

}  }

在控制台程式中建立乙個配置檔案:

[csharp]view plain

copy

print?

"font-size:18px;"

><?xml  version=

"1.0"

encoding=

"utf-8"

?>  

"spring"

>  

"context"

type="spring.context.support.contexthandler, spring.core"

/>  

"objects"

type="spring.context.support.defaultsectionhandler, spring.core"

/>  

"config://spring/objects"

/>  

"">  

name=

"users"

type="spring.demo.compontext.userscompontents,spring.demo.compontext"

singleton=

"false"

>  

object

>    

執行後,發現springhelper卻小引用。我們一般寫**中我們是這樣寫的:

[csharp]view plain

copy

print?

"font-size:18px;"

>

//從config檔案中取得程式集資訊

)  as

//呼叫方法

//users為config檔案裡的配置節

////        type="spring.demo.compontext.userscompontents,spring.demo.compontent">

//iusers user = context.getobject("users"

) as

iusers;

建立乙個類:springhelper:

[csharp]view plain

copy

print?

"font-size:18px;"

>

using

system;  

using

system.collections.generic;  

using

system.linq;  

using

system.text;  

using

spring.context;  

using

spring.context.support;  

namespace

itoo.library.core.aop  

}  /// 

/// 獲取配置檔案 配置的 物件

/// 

/// 

/// 

/// 

public

static

t getobject(

string

objname) where t : 

class

}  }  

以上的**我們就可以將每次讀取配置檔案中的那句話去掉了,我們直接就可以寫這樣一句話就可以了:iusers studentchangebll = springhelper.getobject("users");

這裡體現了封裝的重要性,先前我在做aop的時候,我的師傅看到了類似這樣的**的時候,他就跟我討論過這個問題,我當時懵懵懂懂,沒有進行下一步的行動,現在想想,問題出現在我根本沒有動手去做,或者知識沒有深入到那個層次,認識這個知識的方面沒有那麼深。所有問題,都要動手去做才行。

我們從上面的實踐到分析之後,我們發現其實我們看似是新的東西,其實我們已經學習過了,就像ioc容器一樣,我們學習過了反射和配置檔案,我們發現其實ioc容器不就是反射和配置檔案來實現的嗎,反射和配置檔案是我們在大話設計模式中就已經學習到了的東西,這都不是新的東西。乙個看似複雜的東西,都是有簡單的東西來組裝成的,我們知道這個,就不會對新的東西有畏懼感了。

objective c實現配置檔案 反射

1.先寫plist配置檔案 plist寫到resouce裡面去 通過nsbundle把資料取plist讀出來 2.通過nsclassfromstring建立類 nsclassfromstring nsselectorfromstring 正常來說,id myobj nsclassfromstring...

objective c實現配置檔案 反射 工廠建立

1.先寫plist配置檔案 plist寫到resouce裡面去 通過nsbundle把資料取plist讀出來 2.通過 nsclassfromstring建立類 nsclassfromstring nsselectorfromstring 正常來說,id myobj nsclassfromstrin...

利用反射實現Spring的IOC容器

概念步驟 spring的核心模組就是ioc機制,ioc是inversion of control簡稱。inversion 反轉 物件的獲得,原來由程式開發人員自己構造,變成了由spring指定,由主動獲取變成了被動的接收。control 控制 控制的是物件的建立,原來由程式開發人員來建立乙個物件,現...