Mono.Cecil能 - 如何获得自定义属性
-
11-09-2019 - |
题
我试图使用丝丝检查与给定的方法相关联的属性。这似乎找到它,但使用下面的代码我无法得到它的名字:
AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()
我知道这一定是我设置我的功能,因为当我从DLL中删除它,代码的第二行会变成空的属性。我想要做的是能够获得属性的名称。目前的第二行代码将只返回一个“Mono.Cecil.CustomAttribute”。我猜应该是得到一个属性的名称(类类型)名称的方式,对吧?
谢谢!
解决方案
我曾与此当写入现代艺术博物馆以及麻烦。下面是它采用的代码:
AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].Constructor.DeclaringType.ToString()
其他提示
一个CustomAttribute
是System.Attribute
派生类型的一个实例,因此ToString()
将尽一切制作者决定。
如果您想了解的属性类型,你应该要求他们的类型:
typeInfo.GetCustomAttributes(false)[0].GetType().ToString() ;
我还没有看到你正使用该属性CustomAttributes
,所以我宁愿使用哪个我总是使用的方法MemberInfo.GetCustomAttributes(bool)
。
不隶属于 StackOverflow