只使用Extension方法来设置默认属性是一种好的做法吗

本文关键字:一种 Extension 方法 属性 默认 设置 | 更新日期: 2023-09-27 18:24:08

我正在使用一组第三方控件,并且我正在考虑使用扩展方法来设置几乎在应用程序中使用该控件时需要的一些属性。

为这种用途构建扩展方法是一种好的做法吗?为什么或者为什么不呢?

更详细地说,第三方库是DevExpress,我想写的扩展方法将禁用对他们的特定控件的所有自定义和编辑。

所以与其写

barManager.AllowCustomization = false;
barManager.AllowMoveBarOnToolbar = false;
barManager.AllowQuickCustomization = false;
barManager.AllowShowToolbarsPopup = false;
barManager.AutoSaveInRegistry = false;
foreach (Bar bar in barManager.Bars)
{
    bar.OptionsBar.DrawDragBorder = false;
}

我可以写

barManager.DisableEditing();

只使用Extension方法来设置默认属性是一种好的做法吗

是的,你肯定可以这样做。由于扩展方法只是static方法的语法糖,并且您希望构建一些静态辅助方法来配置对象的给定实例,因此这是有意义的。

为了完整起见,控制配置有时使用与流畅接口相关的扩展方法来完成:

public static class DataGridExtensions
{
    public static DataGrid AllowColumnConfiguration(this DataGrid grid)
    {
        // Add NRE check
        grid.CanUserResizeColumns = true;
        grid.CanUserSortColumns = true;
        grid.CanUserReorderColumns = true;
        return grid;
    }
    public static DataGrid AllowEdition(this DataGrid grid)
    {
        // Add NRE check
        grid.CanUserAddRows = true;
        grid.CanUserDeleteRows = true;
        return grid;
    }
}

所以你可以这样使用它:

var grid = new DataGrid()
    .AllowColumnConfiguration()
    .AllowEdition();