使用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");