質問

私は、指定されたメソッドに関連付けられた属性を検査するためにセシルを使用しようとしています。それを見つけるように見えるが、私は次のコードを使用して、その名前を取得することはできません。

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()

私は、これは私がDLLからそれを削除すると、コードの2行目はnullに判明しますので、私は、私に機能を設定した属性である必要があります知っています。私は何をしたいのは、属性の名前を取得することができます。現在のコードの2行目は、単に「Mono.Cecil.CustomAttribute」を返します。私は、属性の名前(クラスタイプ)名を取得する方法があるはずと思いたいですね。

ありがとうございます。

役に立ちましたか?

解決

同様 MoMAのに書き込む際に

私はこれで問題がありました。ここでは、使用するコードがあります:

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)を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top