2011-01-05 2 views
1

J'ai le code suivant dans AssemblyA:Où est passée ma référence d'assembly d'attributs personnalisés?

[TypeConverter(typeof(AssemblyB.TestTypeConverter))] 
public class TestClass 
{ 

} 

TestTypeConverter est défini dans un ensemble différent (AssemblyB). C'est la seule référence à AssemblyB de AssemblyA. Lorsque je compile ce & jeter un coup d'oeil dans le réflecteur, le TypeConverterAttribute est là, mais AssemblyA n'a aucune référence d'assembly à AssemblyB.dll; c'est seulement mscorlib et System.dll. Où est-il allé, et comment .NET sait-il regarder AssemblyB pour TestTypeConverter?

+0

Exécutez votre assembly via 'ildasm/all' et consultez les tables de métadonnées. –

+0

J'ai jeté un coup d'oeil dans CFF Explorer, et les deux seules entrées de AssemblyRef sont System.dll et mscorlib – thecoop

+0

La balise "assembly" est pour la programmation du langage d'assemblage. Je l'ai supprimé, j'espère que cela ne vous dérange pas. – Jester

Répondre

0

J'ai essayé de reproduire ceci sur ma boîte et ne peux pas le voir. Lorsque je référence AssemblyB.TestTypeConverter dans AssemblyA, Reflector indique correctement que AssemblyA fait référence à AssemblyB.

Est-ce que TestClass est balisé avec l'attribut dans Reflector? Si oui, que se passe-t-il lorsque vous cliquez sur l'attribut dans Reflector?

+0

L'attribut affiche ok dans le réflecteur, et en cliquant sur le typeof() ouvre AssemblyB & navigue vers le type, mais dans la liste 'References' il n'y a que System et mscorlib. Êtes-vous sûr que rien d'autre ne fait référence à AssemblyB de AssemblyA? – thecoop

+0

Oui, 100% sûr. –

+0

Et ildasm contient correctement la référence. –