是否有可能在程序集中扫描具有特定属性的方法?我目前正在开发Visual C++项目,但即使C#也适合我。我需要找到当前具有特殊属性Eg的所有方法。 [XYZ]
适用于它。有什么想法吗?是否有可能在程序集中扫描具有特定属性的方法?
2
A
回答
3
我已经使用Microsoft Roslyn进行类似的任务。它应该很容易。
让我知道你是否需要任何示例代码。
,并看看这个帖子太:http://blog.filipekberg.se/2011/10/20/using-roslyn-to-parse-c-code-files/
反射也可用于的是,GetCustomAttributes方法的返回给定成员上定义的所有属性...
好吧,试试这个:
this.GetType().GetMethods()
环槽的所有方法和GetCustomAttributes
这应该是它。不幸的是我没有在我妻子的笔记本电脑上安装Visual Studio :)
+0
嗨动物,是的请。只是一些示例代码将非常感激。我没有使用Roslyn。我想使用反射。 – Jaggu
4
试试这个。它将搜索任何对象特定属性
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();
}
}
}
2
使用反射来获取的方法和抢属性
3
考虑到装配的路径:
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中调用此代码。
相关问题
- 1. 是否有可能将条码扫描器集成到PHP应用程序中?
- 2. 是否有可能在Objective-C中标记具有多个属性的方法?
- 3. 在Maven程序集中是否有程序集标识属性?
- 4. 是否有可能重定向用户启动扫描仪应用程序?
- 5. 是否有一种方法在Objective-C中具有伪属性?
- 6. 属性是否有方法?
- 7. JavaScript中是否有扫描器方法(或直接输入法)?
- 8. 是否有可能在CSS中具有一定程度的间接性?
- 9. DTD - 是否有一种方法可以要求具有特定值的属性存在?
- 10. 是否有非activex方法将文档扫描到Web应用程序中?
- 11. 是否有可能通过具有特定DataAnnotation和特定值的属性进行循环? .NET C#
- 12. 是否有可能重写属性的方法?
- 13. 是否有可能在Jenkins上显示Fortify扫描结果
- 14. 子类是否具有父类的所有属性和方法?
- 15. 具有特定属性值
- 16. 具有特定属性
- 17. 具有特定属性
- 18. java hasNext方法用于检查扫描程序是否有更多的令牌
- 19. 是否有可能确定程序集是否在Web服务中加载?
- 20. 带有嵌套属性的DyanamoDB扫描
- 21. 无法删除具有特定属性集实体的Java GAE
- 22. 是否有可能扫描Android类路径的注释?
- 23. 是否有可能减少扫描BLE设备的时间?
- 24. 是否有可能在C#中有额外的(忽略)属性?
- 25. 是否有可能在DataGridTemplateColumn属性中使用绑定
- 26. 是否有可能在代码中“x:绑定”一个属性?
- 27. 是否有可能确定.NET程序集编写的语言?
- 28. 检查属性是否具有属性
- 29. 检查对象是否具有特定值的属性
- 30. 检查NSArray是否包含具有特定属性的对象
您正在寻找C++/CLI代码来扫描.Net程序集以查找属性,对吗? – user7116
@sixlettervariables:是的。 – Jaggu