使用C#創建自己的DSL(三)—— Flunt Api的使用

使用Flunt Api可以使代碼的可讀性更好,更接近於領域專家。Flunt Api的另一個好處是易於擴展,可以通過擴展爲核心業務類增加功能。這裏舉一個簡單的例子進行說明,比如有下面的類:

using System.Collections.Generic;

namespace ZL.Stock
{
    public class StockAnalyzer
    {
        public List<StockFirstTrade> StockFirstTrades { get; private set; }
        public StockAnalyzer(List<StockFirstTrade> stockFirstTrades)
        {
            StockFirstTrades = stockFirstTrades;
        }
    }
}

我們爲這個類增加一些方法,可以定義一個類,聲明爲static:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZL.Stock
{
    public static class StockAnalyzerExt
    {
        public static StockFirstTrade Detail(this StockAnalyzer analyzer, string stockcode)
        {
            return analyzer.StockFirstTrades.FirstOrDefault(o => o.TSCode == stockcode);
        }
    }
}

這個類中聲明一個靜態方法,這個方法的第一個參數帶有this關鍵字,那麼這個方法就會擴展到this參數修飾的類上。可以這樣調用這個擴展方法:

var lst = JsonConvert.DeserializeObject<List<StockFirstTrade>>(json);
var analyzer = new StockAnalyzer(lst);
var detail=analyzer.Detail("688001.SH");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章