![]() |
1
3
这是AOP的最佳地点。
微软是否被视为第三方?如果没有,你可以看看
Unity
从他们
Patterns & Practices team
. 看看
否则,您必须使用反射有效地滚动自己的实现。实际上,您需要做的是将对象包装在代理中,其中代理使用反射来检查属性并进行适当的解释。如果
我的建议是使用Unity(或另一个AOP解决方案)。 |
![]() |
2
2
不幸的是,属性不会在运行时执行。一些内置属性修改了编译后的代码,比如MethodImpl属性和类似的属性,但所有自定义属性都只是元数据。如果没有代码去寻找元数据,那么它将位于那里,根本不会影响程序的执行。 换句话说,你需要那个if语句 在某处 . 除非你能使用像这样的工具 PostSharp 如果没有对属性的显式检查,就无法在.NET框外完成此操作。 |
![]() |
3
2
这看起来是一个完美的候选人
AOP
. 简而言之,这意味着
在C中,有两种常用的AOP选项 Castle.DynamicProxy 和 PostSharp . 各有利弊。 This question 总结他们的分歧。 Here are other options 对于在.NET中执行AOP,其中一些可以在没有第三方库的情况下完成。我仍然建议使用dynamicproxy、postsharp、linfu、spring.aop或unity,其他解决方案都没有那么灵活。 |
![]() |
4
2
自定义属性与反射密切相关。 您需要创建另一个类,该类负责调用CanAccessDatabase()类中的方法。 使用反射,这个新类将确定每个方法的属性。如果找到iseligible check属性,它将执行staticlass.iseligible()检查,并且仅在检查通过时调用canaccessdatabase()。 希尔斯 an introduction 在msdn做这个。它使用memberinfo.getCustomAttributes()方法旋转。 以下是伪代码:
|
![]() |
5
1
我知道这是一条旧线… 您可以使用条件属性: http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute.aspx “向编译器指示除非定义了指定的条件编译符号,否则应忽略方法调用或属性。”
|
![]() |
6
0
检查AOP,它将在这方面帮助您很多,市场上的一个强大组件是 PostSharp |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 3 年前 |