castle

How to access custom method attributes from ProxyGenerationHook in Castle.DynamicProxy

◇◆丶佛笑我妖孽 提交于 2021-01-07 05:14:34
问题 I'm implementing Interceptor mechanism in .NET with Castle.DynamicProxy (Castle.Core 4.4.0). I'm following this tutorial for selecting which method to intercept: https://kozmic.net/2009/01/17/castle-dynamic-proxy-tutorial-part-iii-selecting-which-methods-to/ It was given an example in this article about "selecting which methods to intercept": public class FreezableProxyGenerationHook:IProxyGenerationHook { public bool ShouldInterceptMethod(Type type, MethodInfo memberInfo) { return

How to access custom method attributes from ProxyGenerationHook in Castle.DynamicProxy

自闭症网瘾萝莉.ら 提交于 2021-01-07 05:05:23
问题 I'm implementing Interceptor mechanism in .NET with Castle.DynamicProxy (Castle.Core 4.4.0). I'm following this tutorial for selecting which method to intercept: https://kozmic.net/2009/01/17/castle-dynamic-proxy-tutorial-part-iii-selecting-which-methods-to/ It was given an example in this article about "selecting which methods to intercept": public class FreezableProxyGenerationHook:IProxyGenerationHook { public bool ShouldInterceptMethod(Type type, MethodInfo memberInfo) { return

ASP.NET Core搭建多层网站架构【0-前言】

风流意气都作罢 提交于 2020-12-13 02:54:29
2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构 目录 0-前言 1-项目结构分层建立 2-公共基础库 3-xUnit单元测试之简单方法测试 4-工作单元和仓储设计 5-网站数据库实体设计及映射配置 6-注册跨域、网站核心配置 7-使用NLog日志记录器 8.1-使用ViewModel注解验证 8.2-使用AutoMapper映射实体对象 8.3-编写角色业务的增删改 9.1-使用Autofac代替原生的依赖注入 9.2-使用Castle.Core实现动态代理拦截器 10-使用JWT进行授权验证 11-WebApi统一处理返回值、异常 12-xUnit单元测试之集成测试 13-扩展之网站支持全球化和本地化多语言语系 14-扩展之部署到IIS 15-扩展之使用Obfuscar混淆加密保护代码 网站内容 简单的后台管理系统,拥有用户登录、角色管理、日志记录的功能 支持MySQL、SQL server数据库 泛型仓储设计完善,不用每个实体单独定义一个仓储(也可以使用this自定义扩展或覆写) 工作单元统一管理所有的仓储,统一管理事务和提交 开发调试阶段,开启EntityFrameworkCore的日志,可以看到每次执行的具体sql,方便排查错误

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

为君一笑 提交于 2020-12-06 04:09:58
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ 代码已上传Github+Gitee,文末有地址   上回《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之九 || 依赖注入IoC学习 + AOP界面编程初探 》咱们说到了依赖注入Autofac的使用,不知道大家对IoC的使用是怎样的感觉,我个人表示还是比较可行的,至少不用自己再关心一个个复杂的实例化服务对象了,直接通过接口就满足需求,当然还有其他的一些功能,我还没有说到,抛砖引玉嘛,大家如果有好的想法,欢迎留言,也可以来群里,大家一起学习讨论。昨天在文末咱们说到了AOP面向切面编程的定义和思想,我个人简单使用了下,感觉主要的思路还是通过拦截器来操作,就像是一个中间件一样,今天呢,我给大家说两个小栗子,当然,你也可以合并成一个,也可以自定义扩展,因为我们是真个系列是基于Autofac框架,所以今天主要说的是基于Autofac的Castle动态代理的方法,静态注入的方式以后有时间可以再补充。   时间真快,转眼已经十天过去了,感谢大家的鼓励,批评指正,希望我的文章,对您有一点点儿的帮助,哪怕是有学习新知识的动力也行,至少至少,可以为以后跳槽增加新的谈资 [哭笑],这些天我们从面向对象OOP的开发

MassTransit Get Started->

半腔热情 提交于 2020-09-29 15:47:04
MassTransit:是一款.NET的分布式应用程序框架(开源、免费)。通过MassTransit,可以轻松创建利用基于消息的、松耦合异步通信的应用程序和服务,以提高可用性,可靠性和可伸缩性。 MassTransit本身定位轻量级的服务总线,并支持多种传输方式如:RabbitMQ、Azure Service Bus、ActiveMQ、Amazon SQS、Kafka、Azure Event Hub。消息异常处理:重试配置、重新交付、erro管道、死信管道。分布式事务处理:sagas、Courier。容器支持:.NETcore自身的、autofac、castle windsor等、调度支持:Quartz 、hangfire。更多功能参考官网文档。 MassTransit目前已经发布到了第7个版本了,7.0版本新增了对Kafka 的支持,构建仅支持.NET Standard 2.0...其他改动不大。MassTransit社区使用也是很活跃的,对于首次接触的,通过本篇文章(基于rabbitmq)帮你快速入门! 一个应用程序或服务可以使用两种不同的方法来生产消息,主要区别是sent需要指定具体的端点地址,而pub不需要,下面的代码会演示这两种方式。 发布事件(多个接收者) 发送命令(一个接收者) 发布事件(事件消息) 场景假设:在xx项目中,需要与第三方进行交互。比如:订单发货之后

10.AOP

一曲冷凌霜 提交于 2020-08-12 20:16:03
1.AOP:允许开发者动态修改静态的OO模型 2.AOP是一种编程思想,是OOP的补充 3.正是因为能够动态的扩展功能,所以在程序设计时就有以下好处: (1)聚焦核心业务逻辑,权限/异常/日志/缓存/事务 等通用功能通过AOP方式添加,程序设计简单 (2)动态扩展,集中管理,代码复用,规范化 4.实现AOP的方式 (1)静态实现:装饰器/代理模式 (2)动态实现:Remoting/Castle(Emit) (3)静态织入:PostSharp (4)依赖注入容器的AOP扩展 Unity容器: ①顺序问题:配置文件的注册顺序是调用顺序,然后才是业务方法,但扩展逻辑可以在业务方法后 ②接口方法不需要某个AOP扩展--》a.判断方法 b.使用特性 5.MVC的Filter:特性标记,然后该方法执行前/后就多了逻辑 invoke调用中心--负责反射调用方法--检查特性--有则执行额外逻辑 来源: oschina 链接: https://my.oschina.net/u/4399905/blog/4439742

Gym

▼魔方 西西 提交于 2020-08-10 18:34:18
ACM-ICPC Southeastern European Regional Programming Contest Bucharest, Romania – Vinnytsya, Ukraine October 22, 2016 Problem C Castle Input File: C.in Output File: standard output Time Limit: 0.5 seconds (C/C++) Memory Limit: 256 megabytes K. has stumbled upon a weird game while playing on his computer. The game consists of an initial string S of length N (1 ≤ N ≤ 1000) and an empty set T. The following events might occur during the game:  a character is added at the end of S, thus increasing its length by 1  the string S is added to the set T  the game master inquires: “How many strings in

HDU

你说的曾经没有我的故事 提交于 2020-08-10 13:59:09
Super Mario HDU - 4417 Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory. Now the poor princess is in trouble again and Mario needs to save his lover. We regard the road to the boss’s castle as a line (the length is n), on every integer point i there is a brick on height hi. Now the question is how many bricks in L , R Mario can hit if the maximal height he can jump is H. InputThe first line follows an integer T, the number of test data. For each test data: The first line contains two integers n, m (1 <= n <=10^5, 1 <= m <= 10^5), n is the

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

时光怂恿深爱的人放手 提交于 2020-08-09 21:29:18
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ 代码已上传Github+Gitee,文末有地址   上回《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之九 || 依赖注入IoC学习 + AOP界面编程初探 》咱们说到了依赖注入Autofac的使用,不知道大家对IoC的使用是怎样的感觉,我个人表示还是比较可行的,至少不用自己再关心一个个复杂的实例化服务对象了,直接通过接口就满足需求,当然还有其他的一些功能,我还没有说到,抛砖引玉嘛,大家如果有好的想法,欢迎留言,也可以来群里,大家一起学习讨论。昨天在文末咱们说到了AOP面向切面编程的定义和思想,我个人简单使用了下,感觉主要的思路还是通过拦截器来操作,就像是一个中间件一样,今天呢,我给大家说两个小栗子,当然,你也可以合并成一个,也可以自定义扩展,因为我们是整个系列是基于Autofac框架,所以今天主要说的是基于Autofac的Castle动态代理的方法,静态注入的方式以后有时间可以再补充。   时间真快,转眼已经十天过去了,感谢大家的鼓励,批评指正,希望我的文章,对您有一点点儿的帮助,哪怕是有学习新知识的动力也行,至少至少,可以为以后跳槽增加新的谈资 [哭笑],这些天我们从面向对象OOP的开发

浅谈IOC

混江龙づ霸主 提交于 2020-08-04 11:39:24
一、引言 IOC-Invertion of Control,即控制反转,是一种程序设计思想,世上本没有路,走的人多了便有了路,本文将一步步带你了解IOC设计思想的演进之路。 在学习IOC之前我们先初步了解几个概念 依赖(Dependency) :就是有联系,表示一个类依赖于另一个类 依赖倒置原则(DIP) :设计模式六大原则之一,是一种软件架构设计原则 控制反转(IOC) :一种软件设计原则,上层对下层的依赖(即底层模块的获得)交给第三方 依赖注入(DI) :实现IOC的一种方式、手段 IOC容器 :依赖注入的框架,用来映射依赖,管理对象创建和生存周期 二、依赖 依赖就是有联系,有地方使用它就是有依赖它,下面看一个简单的示例 class BMW { public string Show() { return " 宝马 " ; } } class ChinesePeople { private BMW bmw = new BMW(); public void Run() { Console.WriteLine($ " 今天开{bmw.Show()}上班 " ); } } class Program { static void Main( string [] args) { ChinesePeople people = new ChinesePeople(); BMW bmw =