自定义匹配规则探索:微软企业库PolicyInjection的CustomAttributeMatchingRule
需积分: 9 36 浏览量
更新于2024-09-10
1
收藏 106KB DOCX 举报
"微软企业库5.0教程,PolicyInjection模块,AOP,自定义Matching Rule,CustomAttributeMatchingRule,CustomMatchingRule"
在微软企业库5.0中,PolicyInjection模块是一个强大的工具,它允许开发者通过面向切面编程(AOP)来插入横切关注点,如日志、事务管理等,而无需直接修改业务逻辑代码。本篇教程将继续深入探讨PolicyInjection模块中的自定义Matching Rule,特别是CustomAttributeMatchingRule和CustomMatchingRule。
首先,CustomAttributeMatchingRule是一个灵活的匹配规则,它允许开发者根据自定义特性来决定哪些方法或类应该触发策略。相比于预定义的TagAttributeMatchingRule,CustomAttributeMatchingRule不再局限于特定的TagAttribute特性,而是可以使用任何自定义特性来标记需要拦截的方法或类。它的主要配置参数包括:
1. AttributeTypeName:指定自定义特性的完全限定名称。这样,PolicyInjection模块在运行时会寻找带有该特性标记的方法或类。
2. SearchInheritanceChain:一个布尔值,决定是否在类的继承链中搜索特性。默认为false,意味着只检查当前类,不考虑基类。
下面是一个简单的示例来说明CustomAttributeMatchingRule的使用:
首先,我们需要定义一个自定义特性,例如`MyCustomAttribute`:
```csharp
[AttributeUsage(AttributeTargets.Method)]
public class MyCustomAttribute : Attribute {}
```
然后,我们可以在需要拦截的方法或类上应用这个自定义特性:
```csharp
public abstract class CustomAttrTest
{
[MyCustomAttribute]
public abstract string CwInfo();
}
public class ChildCustomerAttrTest : CustomAttrTest
{
public override string CwInfo()
{
// 实现方法
}
}
```
若SearchInheritanceChain配置为false,PolicyInjection模块在执行ChildCustomerAttrTest的CwInfo方法时,由于没有直接在ChildCustomerAttrTest类上找到MyCustomAttribute,所以不会应用相关的策略。若将其设置为true,那么即使MyCustomAttribute是在基类上定义的,PolicyInjection也会识别并执行相应的策略。
接下来,我们来看CustomMatchingRule,这是一个更加通用的匹配规则,允许开发者提供完全自定义的匹配逻辑。开发者需要创建一个类实现`MatchingRule`接口,并在其中实现`Matches(MethodBase method)`方法。这个方法返回true或false,以确定给定的方法是否应触发策略。例如:
```csharp
public class MyCustomMatchingRule : MatchingRule
{
public override bool Matches(MethodBase method)
{
// 在这里添加自定义匹配逻辑
return method.Name.StartsWith("My");
}
}
```
配置时,将这个自定义匹配规则的类型名填入PolicyInjection的配置中,这样PolicyInjection就会根据提供的匹配逻辑来决定何时应用策略。
通过CustomAttributeMatchingRule和CustomMatchingRule,开发者可以更精细地控制PolicyInjection模块的行为,实现更复杂和特定的AOP需求。这两个匹配规则的使用,大大增强了微软企业库5.0的灵活性和适应性,使其能更好地服务于各种项目需求。
2014-07-28 上传
2014-07-28 上传
2014-07-28 上传
2014-07-28 上传
2014-07-28 上传
2014-07-28 上传
2014-07-28 上传
2022-06-03 上传
2014-07-28 上传
bestforsmx
- 粉丝: 8
- 资源: 72
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析