在 ABP 中有一個 IShouldNormalize 接口,內部只有一個方法 Normalize。
namespace Abp.Runtime.Validation
{
//
// 摘要:
// This interface is used to normalize inputs before method execution.
// 此接口用於在方法執行之前對輸入進行規範化。
public interface IShouldNormalize
{
//
// 摘要:
// This method is called lastly before method execution (after validation if exists).
// 此方法最後在方法執行之前調用(驗證存在則在之後調用)。
void Normalize();
}
}
凡是繼承了該接口的類,在實現 Normalize 方法後,就會根據場景自動執行方法體,我們就可以在該方法中實現一些參數的初始化了。
比如 ABP 中用得最多的場景 Sorting,在列頭排序字段爲空的時候,使用默認排序就是這樣實現的。
另外這裏順便把 IShouldNormalize 的大哥 constructor 介紹下。constructor 是初始化的時候被調用,正好與 IShouldNormalize 相反。所以這裏又多出一條路了。