【发布时间】:2016-04-10 06:09:30
【问题描述】:
我在看一个开源的c#项目,在一些基础类中,有很多自定义属性,如下:
[Parameter("aaa", typeof(int), "this is aaa")]
[Parameter("bbb", typeof(bool), "this is bbb")]
[Serializable]
public class Number : DataElement
{
...
}
现在我需要了解这些自定义属性,但没有文档。 所以我需要根据这些自定义属性找到哪个函数做事。通过阅读这些函数,我可以明白其中的含义。
有没有彻底的方法来定位项目中的函数,函数会根据某些自定义属性做某事?
【问题讨论】:
-
“使用这些属性”到底是什么意思?属性只不过是描述代码成员的元数据,并且可以通过 .NET 反射(通过任何一段代码)查找此元数据。见stackoverflow.com/questions/720157/…
-
我想我应该澄清“使用这些属性”的含义,我的意思是不直接将它用于某些类,就像我问题中的示例一样。它对已经描述的类做一些事情通过属性。我想找到一些函数根据它已经拥有的属性对类做一些事情。
-
这是自定义属性类吗?在这种情况下,搜索
ParameterAttribute应该会引导您找到正在使用它的代码(如果它正在被使用的话)。否则,我将首先查找这些属性的文档。我可以找到至少两个同名的类:System.Management.Automation.ParameterAttribute和System.Data.Linq.Mapping.ParameterAttribute,所以当然,你必须先弄清楚你要处理的是哪一个。 -
请注意,在
[Parameter(...)]上使用“查找所有引用”会查找对属性的构造函数 的引用。您需要找到对该属性 class 的所有引用。转到其定义,单击类名,然后“查找所有引用”。 -
哦,我确定它是一个自定义属性,我找到了它的定义。你说我可以在整个解决方案中搜索“ParameterAttribute”,我试过了,但我什么也没找到想,这是否意味着这些属性只是被定义并提供给类,但是没有函数使用这些属性来做事,即它们现在对程序什么都不做?
标签: c#