Tag: aop

一个用于dependency injection的框架(在MVC应用程序中)和简单的AOP任务(使用属性)

我已经到了想要在我的ASP.NET应用程序中完成2个任务的地步,这两个任务都可以使用一些AOP框架来完成,但它们都具有不同的性质: 我的控制器和服务的dependency injection 我创建了自定义属性NotNullAttribute并用它标记了一些方法的参数或属性,而不是抛出ArgumentNullException如果这些参数或属性为null。 我希望AOP框架在编译时检查这些属性,并添加throw原因。 示例如下: //original code that I write public void MyMethod([NotNull]string param1){ //do something } 。 //code actually being compiled – after AOF processing/weaning public void MyMethod(string patam1){ if(param1 == null){ throw new ArgumentNullException(“param1”); } //do something } 所以我想要框架(甚至不一定是AOP,但我想它必须是),这将允许我简单地完成这两项任务。 我有一些额外的要求: 占地面积小,1或2个组件 集成到VS – 我只想按Ctrl+F5进行编译,框架可以正常工作,注入依赖项,添加exception抛出代码, 而我甚至不知道它。 我不想从命令行或类似的东西运行预编译。 exception抛出代码生成我喜欢写类。 像常规方面一样。 不是XML,没有配置(可以接受约定)。 对于dependency injection,我也更喜欢类,但XML或其他配置文件是可以接受的,但它应该足够简单,以供那些不真正了解XML并且不喜欢它的人使用。 有一些这样的框架吗? […]

如何基于条件退出PostSharp方面的OnEntry方法中的方法

我希望方面基于如下条件退出方法调用: [AttributeUsage(AttributeTargets.Method)] public class IgnoreIfInactiveAttribute : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionEventArgs eventArgs) { if (condition) { **// How can I make the method return here?** } } } 任何帮助非常感谢。

外部AOP(如AspectJ)编织.net?

我想通过编织IL中的代理来在程序中进行跟踪记录。 什么是当前有利于此的框架? (我用谷歌搜索的大多数都是旧的或没有文档,这就是我问的原因。

使用属性调用方法

我有各种各样的方法,在继续自己的实现之前都需要执行相同的function。 现在我可以在每个方法中实现这些函数,但我想知道是否有办法利用attributes来执行此操作? 作为一个非常简单的示例,所有网络呼叫都必须检查网络连接。 public void GetPage(string url) { if(IsNetworkConnected()) … else … } 这可以工作,但我必须为使用网络的每个方法调用IsNetworkConnected方法并单独处理它。 相反,我想这样做 [NetworkCall] public void GetPage(string url) { … } 如果网络不可用,则会调用错误方法,并忽略GetPage ,否则将调用GetPage 。 这听起来非常像Aspect Orientated Programming,但我不想为几个调用实现整个框架。 这更像是一个学习练习而不是实现练习,所以我很好奇这样的事情是如何最好地实现的。

ASP.NET MVC中面向方面的编程

我目前正在ASP.NET中开发一个MVC应用程序,我正试图分离关注点,以便最终得到更清晰,更可维护的代码。 所以,作为一个起点,我正在考虑一个日志方面。 我的想法是(最初)记录每个控制器中每个方法的调用和返回。 我将这个逻辑放在一个专门用于日志记录的单独的类上,所以我不会在任何地方使用日志语句来破坏我的代码。 我还需要访问Http请求,以便获取客户端信息。 有没有综合的方法来做到这一点? ASP.NET MVC可以像AspectJ一样在Aspect中使用Aspect文件吗? 此外,以后可以配置为记录满足某些条件的方法吗? (如签名,返回值,exception抛出等) 首先十分感谢!

使用标准.NET Framework的AOP属性的基本实现

可能重复: C#wrap方法通过属性 我想实现这样的function: [Atomic] public void Foo() { /* foo logic */ } 其中[Atomic]属性是一个属性,它在事务范围内包装函数逻辑: using(var scope = new TransactionScope()) { /* foo logic */ scope.Complete(); } 怎么写这样的属性? 我之前已经问过基本相同的问题 ,我知道这可以使用AOP完成,但我没有提到我正在寻找一些最简单的概念certificate实现或有用的文章,可以帮助我使用纯.NET编写框架(我想使用RealProxy和MarshalByRefObject类型,我读过这些类型的浏览相关问题)。 我需要完全解决这个显示的例子。 这似乎是一个基本的东西,所以我想学习如何从头开始。 它现在不需要安全和灵活。

如何为Unity中的所有已注册类型配置日志记录拦截器?

我将跟踪由Unity容器管理的服务中发生的每个操作作为文件系统中的日志。 我想我可以定义一个名为IService的接口,所有其他接口或实现都应该从他inheritance。 另一方面,我想开发一个自定义拦截行为或调用处理程序来将日志保存到文件中。 不幸的是,我发现使用此代码对我不起作用 IUnityContainer unity = new UnityContainer(); //Interception unity.AddNewExtension(); Interception interception = unity.Configure(); unity.RegisterType( new DefaultInterceptor(new InterfaceInterceptor()), new DefaultInterceptionBehavior(new LoggingBehavior())); string[] configFiles = Directory.GetFiles(“.”, “*.config”); foreach (string configFile in configFiles) { var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var unitySection = (UnityConfigurationSection) configuration.GetSection(“unity”); unity = […]

使用PostSharp在c#中使用构造函数的方面

我正在研究PostSharp中的各种概念。 更新: 这是我的程序类 namespace myconstructor { class Program { static void Main(string[] args) { createfolder(); streamfolder(); } public static void createfolder() { File.Create(“E:/samplefile.txt”); } public static void streamfolder() { StreamWriter sw = new StreamWriter(“E:/samplestream.txt”); } } } 和我的方面课一样 1)一些跟踪方面类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using PostSharp.Extensibility; using PostSharp.Aspects.Dependencies; using PostSharp.Aspects; using PostSharp.Aspects.Advices; […]

如何获取所有局部变量的转储?

发生exception时,如何转储所有本地和会话变量? 我正在考虑编写某种基于reflection的函数,该函数将询问调用函数并创建变量和值的转储。 我可以使用现有的库吗? UPDATE 在与同事交谈后,我被指向AOP或面向方面编程。 这就是我的理解……使用AOP,可以简单地用某些属性修饰方法和类。 然后,AOP框架在这些类和方法中或周围注入代码。 有两种不同的框架,一种是注入代码然后编译程序集,另一种是简单地使用reflection和陷阱你已经装饰的调用,并在运行时包装方法周围的代码。 我希望所有这些都有意义。 我将对此进行更多研究并发布我的方法。 多谢你们 …

在.Net世界中使用的任何成熟的AOP库?

图书馆应该至少与AspectJ相比,任何?