国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[.NET]使用Json.NET提供依賴注入功能(DependenceInjection)

2019-11-14 15:51:25
字體:
來源:轉載
供稿:網友

[.NET] 使用Json.NET提供依賴注入功能(Dependence Injection)

前言

在一些小型項目的開發情景里,系統不需要大型DI Framework所提供的:單一對象生成、生命周期管理...等等延伸功能,只需要,單純使用反射生成功能,從配置文件取得功能對象來注入到系統。在這樣的開發情景中,如果選擇SPRing .NET、Unity來做為系統的依賴注入模塊,無形中就增加了系統的技術門坎、增加了開發人員的知識負擔。

本篇文章介紹如何使用Json.NET來反射生成JSON配置文件中所定義的功能對象,讓開發人員能夠透過設定簡單的JSON檔案、簡潔易懂的指令,來提供系統使用依賴注入的功能。主要為自己留個紀錄,也希望能幫助到有需要的開發人員。

  • Json.NET官網

前言01

開發

加入Json.NET

使用Visual Studio開啟項目之后,開發人員可以透過內建的NuGet封裝管理員來安裝Json.NET套件。

開發01

建立依賴注入的接口與實作

建立項目并且加入Json.NET套件之后,就可以先著手在項目內,建立系統所需要依賴注入的接口與實作。

public interface IAnimal{    // Methods    void Hit();}public class Dog : IAnimal{    // Methods    public void Hit()    {        Console.WriteLine("Dog : " + "Running");    }}public class Cat : IAnimal{    // Fields    private readonly string _cry = null;    // Constructors    public Cat(string cry)    {        // Default        _cry = cry;    }    // Methods    public void Hit()    {        Console.WriteLine("Cat : "+ _cry);    }}

建立反射生成的配置文件

接著使用Json.NET所定義的格式,來建立對象反射生成所需要的JSON配置文件。在這份配置文件中,每個對象的「$type」屬性使用逗號來切割內容。逗號前的內容,代表了這個對象的命名空間+類別名稱;逗號后的內容代表了這個對象的組件名稱。而其他「$type」之外的屬性,則是會被剖析為對象的建構參數、對象屬性。

[  {    "$type": "JsonDISample.Dog, JsonDISample"  },  {    "$type": "JsonDISample.Cat, JsonDISample",    "cry": "Meow"  },  {    "$type": "JsonDISample.Cat, JsonDISample",    "cry": "Purr"  }]

使用Json.NET注入物件

最后使用下列程序代碼,從檔案中讀取JSON配置文件內容,再使用JsonConvert.DeserializeObject反射生成對象,就可以將Json.NET生成的接口與實作,注入系統來使用。另外,在這段程序代碼中,要特別注意「JsonSerializerSettings.TypeNameHandling」這個屬性必須要設定為All,這樣Json.NET才會特別去處理$type屬性來反射生成指定對象。

static void Main(string[] args){    // ConfigJson    string configJson = System.IO.File.ReadAllText("animals.json");    if (configJson == null) throw new InvalidOperationException();    // SerializerSettings    var serializerSettings = new JsonSerializerSettings();    serializerSettings.TypeNameHandling = TypeNameHandling.All;    // Animal    var animalList = JsonConvert.DeserializeObject<List<IAnimal>>(configJson, serializerSettings);    if (animalList == null) throw new InvalidOperationException();    // Hit    foreach (var animal in animalList)    {        animal.Hit();    }    // End    Console.ReadLine();}

執行

完成開發步驟后,就可以按下Visual Studio的執行按鈕來檢視成果。接著觀察程序執行的結果,可以發現系統的確依照JSON配置文件的內容,動態生成對象、并且提供這些對象給系統使用。

執行01

范例下載

范例程序:點此下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潜江市| 三台县| 江山市| 怀宁县| 大连市| 吴堡县| 九龙坡区| 西贡区| 二连浩特市| 象山县| 安平县| 舟曲县| 大新县| 广宁县| 自贡市| 洞头县| 镇雄县| 东平县| 乌拉特前旗| 旬邑县| 黎城县| 六安市| 漳平市| 小金县| 威信县| 得荣县| 万山特区| 锦州市| 聂拉木县| 荃湾区| 凌云县| 东乌| 株洲市| 古田县| 刚察县| 绥宁县| 黔东| 吉隆县| 连平县| 利川市| 五大连池市|