2012-12-06 105 views
3

.Net框架和專門的C#語言是否支持Reflect Oriented ProgrammingAspect Oriented Programming在.Net和C中面向方面和麪向方面#

+2

是的兩個,請參閱System.Reflection命名空間和http://www.sharpcrafters.com/aop.net – jbl

+0

@jbl我會說C#不支持AOP。您需要PostSharp或類似的擴展,純C#不能正常工作。 – CodesInChaos

+0

這似乎也是Anders Hejlsberg反對AOP。 http://www.sharpcrafters.com/blog/post/Anders-Hejlsberg-Dead-Body.aspx –

回答

0

反思,是的:你可以使用System.Reflection命名空間。原來面向方面的編程並不是真的被.NET/C#支持,你需要一個第三方工具。一些流行的例子是PostSharp和Castle DynamicProxy。

2

是的,.NET本身支持AOP和反射式編程。

使用反射和System.Reflection命名空間反思面向對象編程。

對於AOP有多個ways。 .NET Framework自身僅支持遠程代理和派生自ContextBoundObject的遠程代理,但由於其性能而不推薦用於AOP。使用第三方庫的所有其他可能性。

    使用遠程處理代理
  • 從ContextBoundObject
  • 編譯時子類(犀牛代理)
  • 運行時子類(城堡動態代理)
  • 掛鉤導出到探查API
  • 方法(類型模擬)
  • 編譯時間IL編織(Post Sharp/Cecil)
  • 運行時IL編織(Post Sharp/Cecil)