摘要: Unity的拦截策略中提供了程序集匹配规则,我们可以对于属于某个特定程序集的类型附加CallHandler。看一个简单的示例: AssemblyMatchingRule的构造函数允许传递字符或者Assembly信息。上面的示例传递了当前AppDomain入口的EntryAssembly,MyObje 阅读全文
posted @ 2012-08-10 11:46 junchu25 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 在研究Unity的AdditionalInterfaces时候产生一个疑问,假设现有类型的函数名称和一个接口的函数名称相同,通过附加接口后创建的代理类型规范了这一组操作。下面是模拟的定义和调用: 现在通过Intercept的NewInstanceWithAdditionalInterfaces函数为 阅读全文
posted @ 2012-08-10 11:43 junchu25 阅读(355) 评论(0) 推荐(0) 编辑
摘要: Unity提供了PolicyInjectionBehavior用来为一个类型创建时定义拦截的策略,符合特定条件的类型才会被附加特定的功能,当然之前你必须先定义使用的Interceptor。默认规则有:Assembly、CustomAttribute、Member Name、Method Signat 阅读全文
posted @ 2012-08-10 11:43 junchu25 阅读(197) 评论(0) 推荐(0) 编辑
摘要: Unity的拦截技术可以独立使用,你不需要使用Microsoft.Practices.Unity.dll、Microsoft.Practices.Unity.Configuration.dll、Microsoft.Practices.ServiceLocation.dll。而只需要使用Microso 阅读全文
posted @ 2012-08-10 11:41 junchu25 阅读(329) 评论(0) 推荐(0) 编辑
摘要: Unity默认提供了三种拦截器:TransparentProxyInterceptor、InterfaceInterceptor、VirtualMethodInterceptor。 TransparentProxyInterceptor:代理实现基于.NET Remoting技术,它可拦截对象的所有 阅读全文
posted @ 2012-08-10 11:40 junchu25 阅读(2483) 评论(3) 推荐(0) 编辑
摘要: 继续前一篇实现的NotifyPropertyChangedBehavior,如何在配置文件中添加: 默认Unity的配置无法识别interceptor,需要在unity配置节中添加一个sectionExtension,由InterceptionConfigurationExtension处理(Mic 阅读全文
posted @ 2012-08-10 11:38 junchu25 阅读(436) 评论(0) 推荐(0) 编辑
摘要: Unity提供了自带的拦截器,如果你并不想编写繁琐的拦截器可以选择编写更轻量的方式Behavior。拦截器的应用场景有不少,比如一些数据访问框架,它们的核心概念是AOP。通过创建一个继承于类型的代理类型,并重写它的virtual函数将拦截器置入其中。前置处理函数负责打开数据库连接、启动事务,后置处理 阅读全文
posted @ 2012-08-10 11:36 junchu25 阅读(416) 评论(0) 推荐(0) 编辑
摘要: Unity的函数依赖注入和之前提到的构造函数、属性使用相同。InjectionMethodAttribute指定需要注入的函数。 DependencyAttribute可以指定需要依赖注入的注册名称。OptionalDependencyAttribute在没有注册相应类型的时候默认返回null。 阅读全文
posted @ 2012-08-10 11:30 junchu25 阅读(278) 评论(0) 推荐(0) 编辑
摘要: Unity的属性依赖注入不同于构造函数的默认注入,它需要显示为被注入的属性添加DependencyAttribute。 MyObject的MyInterface属性被注入了MyInterfaceImpl,但是MyInterface2属性由于没有DependencyAttribute则不被注入。Uni 阅读全文
posted @ 2012-08-10 11:29 junchu25 阅读(576) 评论(0) 推荐(0) 编辑
摘要: Unity的构造函数依赖注入提供一种默认的行为,在Resolve一个类型实例时完成依赖注入(这个类型并不一定需要注册,但注入类型需要注册)。看一个简单的示例: MyObject的构造函数参数myInterface和myInterface2被注入了MyInterfaceImpl和MyInterface 阅读全文
posted @ 2012-08-10 11:27 junchu25 阅读(351) 评论(0) 推荐(0) 编辑