加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

ABP框架 功能管理

发布时间:2016-10-29 06:48:34 所属栏目:教程 来源:站长网
导读:副标题#e# 文档目录 本节内容: 简介 关于 IFeatureValueStore 功能类型 Boolean 功能 Value 功能 定义功能 基本功能属性 其它功能属性 功能层次 检查功能 使用RequiresFeature特性 RequiresFeature特性注意事项 使用 IFeatureChecker IsEnabled GetValue

ABP为功能检查使用强大的动态方法拦截,所以在方法上使用RequiresFeature特性有些限制:

  • 不能用在private方法上。
  • 不能用在静态方法上。
  • 不能用在无注入类的方法上(我们必须使用依赖注入)。

同时,可用于:

  • 任何通过接口调用的public方法(如通过接口使用应用服务)
  • 一个直接通过类引用(如Asp.Net Mvc或Web Api控制器)调用的virtual方法。
  • 一个protected virtual方法。

 

使用 IFeatureChecker

我们可以注入IFeatureChecker,并使用它手动检查一个功能(它被自动注入到应用服务,Mvc和Web Api控制器,并被自动使用)。

 

IsEnabled

简单的检查一个给定的功能是否可用,如:

public async Task<FileDto> GetReportToExcel(...)
{
    if (await FeatureChecker.IsEnabledAsync("ExportToExcel"))
    {
        throw new AbpAuthorizationException("You don't have this feature: ExportToExcel");
    }

    ...
}

 

IsEnabledAsync和其它方法同样有异步版本。

当然,IsEnabled方法应当被Boolean类型的功能使用,否则,你会得到异常。

如果你只是想检查一个功能,并抛出异常,如上面例子所示那样,你可以使用CheckEnabled方法。

 

GetValue

获取一个值类型功能的当前值,例如:

var createdTaskCountInThisMonth = GetCreatedTaskCountInThisMonth();
if (createdTaskCountInThisMonth >= FeatureChecker.GetValue("MaxTaskCreationLimitPerMonth").To<int>())
{
    throw new AbpAuthorizationException("You exceed task creation limit for this month, sorry :(");
}

 

FeatureChecker方法也提供了为一个指定tenantId工作的功能,不只是为当前tenantId。

 

客户端

在客户端(Javascript),我们可以使用abp.features命名空间来获取功能的当前值。

 

isEnabled

var isEnabled = abp.features.isEnabled('SampleBooleanFeature');

 

getValue

var value = abp.features.getValue('SampleNumericFeature');

 

 

功能管理器

如果你需要用到功能的定义,你可以注入IFeatureManager并使用它。

 

对版本的一个提示

ABP框架没有一个内容的版本系统,因为如此一个系统需要一个数据库(存储版本,版本功能,租户版本映射...),因此,版本系统在module zero里实现,你可以很容易的使用它并获取一个版本系统,或者你自己实现。

 

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读