我正在使用类似于Microsoft文档https://msdn.microsoft.com/en-us/library/cs58sb90(v=vs.110).aspx中提供的建议的逻辑来检索给予方法参数的自定义属性。
但是,我发现这种方法很昂贵,因为它使用反射来检索自定义属性,我想知道是否有比使用反射更好的方法解决这个问题?
答案 0 :(得分:1)
据我所知,简短的答案是否定的,反射是标准的,也许只是检索属性的唯一方法。
但是,属性在编译时在类型元数据中得到修复,这意味着您只需要在程序的生命周期内为每种类型检查一次属性,并且除非您的代码,否则它们不会在此时间内更改正在做一些非常古怪的运行时类型构造(例如使用Reflection.Emit
)。即使你不知道你的代码需要属性的任何对象的确切类型,你仍然可以将类型的属性缓存在字典中以便再次查找它们,如果你真的那么关心性能。