C# 是否可以在程序集中扫描具有特定属性的方法?
是否可以在程序集中扫描具有特定属性的方法?我目前正在研究Visual C++项目,但即使C语言也很好。我需要在当前assmebly中找到所有应用了paricular属性的方法,例如C# 是否可以在程序集中扫描具有特定属性的方法?,c#,.net,c++-cli,C#,.net,C++ Cli,是否可以在程序集中扫描具有特定属性的方法?我目前正在研究Visual C++项目,但即使C语言也很好。我需要在当前assmebly中找到所有应用了paricular属性的方法,例如[XYZ]。有什么想法吗?我用微软Roslyn做过类似的工作。这应该很容易 如果您需要任何示例代码,请告诉我 再看看这篇文章: 反射也可以用于此目的,GetCustomAttributes方法返回给定成员上定义的所有属性 好的,试试这个: this.GetType().GetMethods() 通过所有方法和get
[XYZ]
。有什么想法吗?我用微软Roslyn做过类似的工作。这应该很容易
如果您需要任何示例代码,请告诉我
再看看这篇文章:
反射也可以用于此目的,GetCustomAttributes方法返回给定成员上定义的所有属性
好的,试试这个:
this.GetType().GetMethods()
通过所有方法和getCustomAttribute循环
应该是这样。不幸的是,我妻子的笔记本电脑上没有安装Visual Studio:)试试这个。它将在任何对象中搜索特定属性
MemberInfo[] members = obj.GetType().GetMethods();
foreach (MemberInfo m in members)
{
if (m.MemberType == MemberTypes.Method)
{
MethodInfo p = m as MethodInfo;
object[] attribs = p.GetCustomAttributes(false);
foreach (object attr in attribs)
{
XYZ v = attr as XYZ;
if (v != null)
DoSomething();
}
}
}
使用反射获取方法并获取给定程序集路径的属性:
static void FindAttributes(String^ assemblyPath)
{
Assembly^ assembly = Assembly::ReflectionOnlyLoadFrom(assemblyPath);
for each (Type^ typ in assembly->GetTypes())
{
for each (CustomAttributeData^ attr
in CustomAttributeData::GetCustomAttributes(typ))
{
Console::WriteLine( "{0}: {1}", typ, attr);
}
}
}
请记住,这会将您使用的每个程序集加载到应用程序域中,因此每次在其自己的AppDomain中调用此代码可能都是值得的。您正在寻找C++/CLI代码来扫描.Net程序集以查找属性,对吗?您好,anima,是的。只要一些示例代码就可以了。我没有用罗斯林。我想使用反射。