首页 > 解决方案 > 检索赋予方法参数的自定义属性

问题描述

我正在使用类似于 Microsoft 文档https://msdn.microsoft.com/en-us/library/cs58sb90(v=vs.110).aspx中的建议的逻辑来检索给定参数的自定义属性一个方法。

但是,我发现这种方法很昂贵,因为它使用反射来检索自定义属性,我想知道是否有比使用反射更好的方法来解决这个问题?

标签: c#.net

解决方案


据我所知,简短的回答是否定的,反射是标准的,并且可能是检索属性的唯一方法。

但是,属性在编译时在类型元数据中是固定的,这意味着您只需在程序的生命周期内为每种类型检查一次它们,并且除非您的代码正在执行某些操作,否则它们不会在那段时间内更改非常古怪的运行时类型构造(例如 with Reflection.Emit)。即使您不知道代码需要属性的任何对象的确切类型,如果您真的很关心性能,您仍然可以将类型的属性缓存在字典中以节省再次查找它们。


推荐阅读