随笔分类 -  Microsoft Enterprise Library

摘要:记得在以前的博客里就提到过probing的privatePath属性可以定义当前AppDomain搜索程序集文件的目录。比如当前应用程序使用A.dll,但是A.dll并没有直接存放在AppDomain的根目录下,而是存储于子目录。在应用程序配置文件中添加probing privatePath可以解决 阅读全文
posted @ 2012-08-11 10:48 junchu25 阅读(4295) 评论(0) 推荐(0) 编辑
摘要:Unity提供了一种默认注入CallHandler的机制,只需要开发人员提供继承于HandlerAttribute抽象类,并实现CreateHandler函数,它返回一个实现ICallHandler的类型。你可以通过上下文传递的IUnityContainer创建对应的ICallHandler实现。看 阅读全文
posted @ 2012-08-11 10:45 junchu25 阅读(298) 评论(1) 推荐(0) 编辑
摘要:Unity可以定于拦截的匹配策略,只要你实现了IMatchingRule接口。我们可以根据实际中框架的不同需求,开发不同的MatchingRule。比如Unity自带的TypeMatchingRule只能够匹配给定的类型,但是无法匹配当前类型的基类型。只要当前类型或者它继承的类型层次结构上等于某个特 阅读全文
posted @ 2012-08-11 10:44 junchu25 阅读(280) 评论(0) 推荐(0) 编辑
摘要:企业库默认提供了AuthorizationCallHandler、ExceptionCallHandler、LogCallHandler、PerformanceCounterCallHandler、ValidationCallHandler。但是你会发现你无法直接通过Unity提供的AddCallH 阅读全文
posted @ 2012-08-11 10:42 junchu25 阅读(347) 评论(0) 推荐(0) 编辑
摘要:Unity提供了丰富的拦截匹配策略,同时它也提供了ApplyNoPoliciesAttribute用于对特定的成员不应用拦截策略。看一个简单的示例: MyObject类型的DoWork函数不会被拦截。 阅读全文
posted @ 2012-08-11 10:41 junchu25 阅读(192) 评论(0) 推荐(0) 编辑
摘要:Unity提供了匹配多个Type的规则TypeMatchingRule类型。和TagAttributeMatchingRule的tagToMatch参数一样,TypeMatchingRule的参数typeName一样不支持通配符。看一个简单的示例: 配置文件如下: 阅读全文
posted @ 2012-08-11 10:40 junchu25 阅读(351) 评论(0) 推荐(0) 编辑
摘要:Unity通过TagAttribute显示定义需要被拦截注入的成员,TagAttributeMatchingRule类型用来匹配该规则。需要注意的是TagAttributeMatchingRule不支持通配符。看一个简单的例子: 配置文件定义如下: 阅读全文
posted @ 2012-08-11 10:36 junchu25 阅读(400) 评论(0) 推荐(0) 编辑
摘要:之前提到Unity提供的ParameterTypeMatchingRule无法定义返回值,ReturnTypeMatchingRule就是用来完成限制这个条件。看一个简单的示例: MyObject中只有函数DoWork的返回值匹配了定义,配置文件定义如下: 阅读全文
posted @ 2012-08-11 10:34 junchu25 阅读(306) 评论(0) 推荐(0) 编辑
摘要:Unity提供了用于匹配函数名称和类型签名的规则MethodSignatureMatchingRule类型。ParameterTypeMatchingRule用于匹配函数的参数类型和参数性质(In、Out),但是无法匹配函数名称。而MethodSignatureMatchingRule的缺点是无法限 阅读全文
posted @ 2012-08-11 10:29 junchu25 阅读(324) 评论(0) 推荐(0) 编辑
摘要:Unity提供了针对类型属性的拦截规则PropertyMatchingRule类型。它的属性名称匹配通配符规则和MemberNameMatchingRule等类型相同。它可以指定拦截getter、setter或者同时拦截。看一个简单的示例: 上面的示例只有调用Name属性的setter才会被拦截。配 阅读全文
posted @ 2012-08-11 10:27 junchu25 阅读(300) 评论(0) 推荐(0) 编辑
摘要:Unity提供了函数入口参数类型匹配的规则ParameterTypeMatchingRule类型。它可以针对一些特定函数的入口参数进行拦截,比如拦截入口参数类型为Int32和Char的函数,看一个简单示例: 只有MyObject的DoWork和DoWork2函数符合定义的ParameterTypeM 阅读全文
posted @ 2012-08-11 10:24 junchu25 阅读(399) 评论(0) 推荐(0) 编辑
摘要:Unity提供了根据名称空间进行匹配规则的类型NamespaceMatchingRule,它的通配符规则和MemberNameMatchingRule相同。看一个简单的示例: 配置文件如下定义: 阅读全文
posted @ 2012-08-10 11:55 junchu25 阅读(643) 评论(0) 推荐(0) 编辑
摘要:Unity提供了基于成员名称的匹配规则类型MemberNameMatchingRule,允许根据匹配表达式进行注入。看一个简单示例: 上面的示例只有DoWork被调用。MemberNameMatchingRule提供了符号*用来完成剩余部分的匹配,如果只传递*则表示全部。 使用*: 使用后置*: 使 阅读全文
posted @ 2012-08-10 11:53 junchu25 阅读(434) 评论(0) 推荐(0) 编辑
摘要:在声明式编程流行的今天,对于AOP中许多附加功能我们往往会通过声明一个Attribute更为直观的展示。比如需要添加一个LogHandler,那就定义一个LogSupportAttribute。Unity提供了自定义Attribute的匹配规则类型CustomAttributeMatchingRul 阅读全文
posted @ 2012-08-10 11:49 junchu25 阅读(708) 评论(0) 推荐(0) 编辑
摘要:Unity的拦截策略中提供了程序集匹配规则,我们可以对于属于某个特定程序集的类型附加CallHandler。看一个简单的示例: AssemblyMatchingRule的构造函数允许传递字符或者Assembly信息。上面的示例传递了当前AppDomain入口的EntryAssembly,MyObje 阅读全文
posted @ 2012-08-10 11:46 junchu25 阅读(733) 评论(0) 推荐(0) 编辑
摘要:在研究Unity的AdditionalInterfaces时候产生一个疑问,假设现有类型的函数名称和一个接口的函数名称相同,通过附加接口后创建的代理类型规范了这一组操作。下面是模拟的定义和调用: 现在通过Intercept的NewInstanceWithAdditionalInterfaces函数为 阅读全文
posted @ 2012-08-10 11:43 junchu25 阅读(361) 评论(0) 推荐(0) 编辑
摘要:Unity提供了PolicyInjectionBehavior用来为一个类型创建时定义拦截的策略,符合特定条件的类型才会被附加特定的功能,当然之前你必须先定义使用的Interceptor。默认规则有:Assembly、CustomAttribute、Member Name、Method Signat 阅读全文
posted @ 2012-08-10 11:43 junchu25 阅读(203) 评论(0) 推荐(0) 编辑
摘要:Unity的拦截技术可以独立使用,你不需要使用Microsoft.Practices.Unity.dll、Microsoft.Practices.Unity.Configuration.dll、Microsoft.Practices.ServiceLocation.dll。而只需要使用Microso 阅读全文
posted @ 2012-08-10 11:41 junchu25 阅读(333) 评论(0) 推荐(0) 编辑
摘要:Unity默认提供了三种拦截器:TransparentProxyInterceptor、InterfaceInterceptor、VirtualMethodInterceptor。 TransparentProxyInterceptor:代理实现基于.NET Remoting技术,它可拦截对象的所有 阅读全文
posted @ 2012-08-10 11:40 junchu25 阅读(2499) 评论(3) 推荐(0) 编辑
摘要:继续前一篇实现的NotifyPropertyChangedBehavior,如何在配置文件中添加: 默认Unity的配置无法识别interceptor,需要在unity配置节中添加一个sectionExtension,由InterceptionConfigurationExtension处理(Mic 阅读全文
posted @ 2012-08-10 11:38 junchu25 阅读(441) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示