传递带有变量值的自定义属性作为参数当身份错误时。publicclassEntityChecker:System.Attribute{publicEntityChecker(intentityId){//做一些逻辑来检查是否允许插入entityId}}我想使用这个自定义属性作为实体添加函数的声明,我想要将变量从函数传递给属性构造函数。这可以做到吗?[EntityChecker(entityId)]publicintAddNewEntity(entityId){//实体添加逻辑}是否可以这样做?!不。属性中的构造函数参数必须在编译时解析。它们旨在成为关于类型或方法本身的元数据,而不是每个调用或每个实例使用的元数据。根据您的描述,属性可能不是处理此问题的合适方法。由于您希望运行每次调用都会发生的额外代码,因此您需要一种不同的技术。例如,您可以传递一个委托,即:publicintCheckedAddEntity(intentityId,FuncfuncToAdd){//在这里对entityId执行检查returnfuncToAdd();然后你可以通过以下方式调用它:intresult=CheckedAddEntity(entityId,AddNewEntity);在这种情况下,我建议您研究一下面向方面的编程。这是一种不同的代码编写方式,但允许您在整个过程中重复使用样板逻辑(例如身份验证)。您可能必须以不同方式设计属性,但所有逻辑都可以放入“方面”,然后在构建项目时自动编译到代码中。我个人使用PostSharp,虽然我知道还有其他的。他们有免费的开发许可证;只要您不需要高级功能,它就非常实惠。http://www.postsharp.net/blog/post/5-Ways-That-Postsharp-Can-SOLIDify-Your-Code-Authorization以上是C#学习教程:传递带有变量值的自定义属性as参数分享全部内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
