Xamarin.ios 单触式AOP

Xamarin.ios 单触式AOP,xamarin.ios,aop,monodevelop,postsharp,Xamarin.ios,Aop,Monodevelop,Postsharp,我想知道是否有支持AOP(面向方面编程)和MonoTouch(从而支持MonoDevelop)的功能 到目前为止,我还没有找到任何支持MonoDevelop的工具。据我所知,像PostSharp这样的工具不受支持。我能够让PostSharp在Android的Mono上工作(使用Visual Studio)。我没有使用MonoTouch,但您可能会尝试一下:不依赖于动态代码生成的工具应该使用MonoTouch。IIRC就是这样一种工具,即它修改IL以获得结果 它对MonoTouch(比其他.NET

我想知道是否有支持AOP(面向方面编程)和MonoTouch(从而支持MonoDevelop)的功能


到目前为止,我还没有找到任何支持MonoDevelop的工具。据我所知,像PostSharp这样的工具不受支持。

我能够让PostSharp在Android的Mono上工作(使用Visual Studio)。我没有使用MonoTouch,但您可能会尝试一下:

不依赖于动态代码生成的工具应该使用MonoTouch。IIRC就是这样一种工具,即它修改IL以获得结果

它对MonoTouch(比其他.NET平台,包括Android版Mono)更具限制性的原因是,iOS不允许代码生成,因此我们无法在设备上进行JIT。这意味着所有MonoTouch应用程序必须(提前)编译为AOT

请注意,工具可以工作并不意味着它可以工作。例如,这些工具必须能够在OSX上执行,您需要将其集成到构建中(在C#编译之后,但在AOT编译之前)。后者可能需要您使用scripts/Makefile来构建项目。

我最近创建了一个名为的插件,它在编译时将拦截代码编织到一个类中,还可以自动实现接口。这或多或少就是castle动态代理“无目标的接口代理”和“有目标的接口代理”以及“类代理”所提供的。 但是请注意,它的局限性在于您需要标记应该由
[StaticProxy]
属性编织的接口/类。因此,您只能截取可以添加此(=>您控制下的源)的类型

此外,由于它添加了构造函数参数,依赖项注入容器的使用基本上是强制性的(它中断了“newfoo(…)”调用)。我已经为ninject和unity创建了扩展:

nuget软件包是可用的,如果有人能测试MonoTouch/MonoDroid集成,我将非常欢迎。我担心我目前没有正确创建nuget包


我还计划添加自动工厂实现(如ninject的“.ToFactory()”绑定)。

这是因为您可以使用Silverlight DLL;我(认为)不能在Monotouch项目的MonoDevelop中引用此DLL。