使用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");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章