2011-04-11 114 views
39

有谁知道postharp的开源替代多数民众赞成在易于使用和支持基于属性的东西吗?我见过的AspectDNG稍微类似,但创建这些属性就像C++代码,并需要一种不同的编译形式开源替代postSharp,支持简单的自定义属性

我知道windsor,ninject,Spring.Net等,但他们都没有像postsharp自定义属性。

我正在寻找一些程序,可以让我在事件发生之前使用自己的自定义属性。

我将不胜感激任何建议。

谢谢

编辑:这个问题的专门描述,它应该支持的属性还没有被问过这些问题。所以,请不要关闭这个问题。这不是重复的。

编辑:我为什么害怕postsharp? PostSharp迄今为止是最好的,但它是商业和使用免费版本的大型项目看起来不确定/风险。我们永远不知道他们什么时候可能会停止他们的免费版本。

编辑:感谢所有的投票和最喜欢的补充。到目前为止,我已经找到了这个:http://zinject.codeplex.com/但它是法文的。请提供更多建议,如果你们中的任何人发现其他事情。

+0

可能dublicate http://stackoverflow.com/questions/1826724/any-postsharp-alternative – 2011-04-11 13:32:04

+1

你想用PostSharp不能为你做的OpenSource产品做什么?社区(或即将成为dtarter)版本可以做很多,而且是免费的。事件是唯一的事情吗? – 2011-04-11 13:34:33

+1

MEF会为你想达到的目标而工作吗? – grzeg 2011-04-11 13:36:26

回答

5
+16

这些是[霍布森的选择](http://en.wikipedia.org/wiki/Hobson's_choice)。 – toddmo 2015-03-20 19:07:48

+1

另一种选择是[NCop](https://github.com/sagifogel/NCop)受postsharp启发的面向复合方面的框架。 – Sagi 2015-09-02 22:15:13

+0

对于你们投票的那些人,记住这个帖子真的很老了。 – 2017-07-17 19:00:46

6

CciSharp是一个另类。像PostSharp一样,它是使用属性的后编译IL重写器。

+3

+1很好的答案。但请记住这些问题:CciSharp需要有关MSIL的高级知识。请注意,在MSIL中编写原型相当容易,但要编写适用于各种情况的转换要困难得多。你将永久地重新发明轮子。 MSIL转换库通常非常低级,它们不提供PostSharp SDK的高级功能。当许多应用于相同的方法时,以这种方式实施的转换通常不能很好地组合。 – 2011-04-11 15:18:50

+0

@Dustin:我完全同意。此外,CciSharp基于CCI Meta库,该库定期进行重大更改。 – 2011-04-11 15:21:52

+0

[CodeCop](http://getcodecop.com/)是一个建立在JSON之上的库,为.NET应用程序编写方法拦截器提供了一种快速而不显眼的方式。 [Here](https://bitbucket.org/codecop_team/codecop/wiki/Home)是一个wiki。 你可以试试:) – 2015-09-03 14:26:12

14

我们刚刚发布Afterthought。从文档:

有感允许开发人员进行后期处理.NET程序集添加,要么不能被添加到原始来源或不方便/高效这么做代码。例子包括:

  1. 调整编译的程序集,而您没有源代码中必须支持/修改
  2. 添加设备逻辑来组装用于测试目的,它不会永远的发行版本的一部分
  3. 实现繁琐的接口或模式,在直接实现时会影响编码工作的简单性。

那么,Afterthought做什么?很简单,它可以让你:

  1. 通过继承修订<创建类型的修正,>描述你想
  2. 属性添加到您的类型的指示修改哪些类型,哪些修改申请
  3. 什么变化
  4. 通过添加新的属性或修改现有属性的逻辑
  5. 通过添加新的方法修改方法或修改的现有方法的逻辑
  6. 通过添加新的构造或米修改构造修改属性减少现有构造函数的逻辑
  7. 直接在利用现有属性/方法的类型上实现接口,添加新的属性/方法,并允许Afterthought自动实现其他所有功能 配置项目以将Afterthought作为构建后应用步骤变化
+1

但我需要创建属性并将其应用于我的方法,就像我可以使用postsharp一样。在您的文档中,我没有看到类似这样的方法输入,退出事件等。你有这样的功能吗? – Josh 2011-04-13 04:47:02

+0

不用担心!我在github上添加了一个[issue](https://github.com/vc3/Afterthought/issues/7),可以向你保证,我们应该尽快实施它。同时,请随时下载源代码并尝试一下,我们希望有更多的贡献者/测试者! – 2011-04-13 13:17:00

+1

..现在它支持添加属性..快乐编码! – 2011-04-14 19:17:41

1

一个很好的选择是http://www.gripper-loom.net/

+3

你能解释一下为什么吗? – 2012-10-19 21:18:33

+0

只需查看一下,该库/工具集似乎是专门针对全面的AOP开发而设计的,其充分的学术灵感解决方案具有必要的复杂性。事后考虑似乎是一个更好的选择,因为它的进入门槛要低得多,如果/当它不能做到你需要的时候,那么考虑更多的准系统。只要我的$ 0.02 :-) – 2013-07-16 23:06:07