Extraire une icône d'une DLL

Le
Mousnynao
Bonjour,

Je tente d'implémenter le code qui suit :

Public Function ExtraireIcone(ByVal iconName As String) As Icon

Dim Assembly_Execution As Assembly = _
Me.GetType().Assembly.GetEntryAssembly()

Dim namespaceName As String = _
Assembly_Execution.GetName().Name.ToString()

iconName = namespaceName & "." & iconName

Dim streamIcon As Stream = _
Assembly_Execution.GetManifestResourceStream(iconName)

Dim iconEmbedded As Icon = New Icon(streamIcon)

Return iconEmbedded

End Function

J'ai un warning sur la ligne :

Dim Assembly_Execution As Assembly = _
Me.GetType().Assembly.GetEntryAssembly()

et plus précisément sur la partie :

Me.GetType().Assembly.GetEntryAssembly()

Je reçois le message :
[ Accès d'un membre partagé, d'un membre constante, d'un membre enum
ou d'un type imbriqué via une instance; l'expression qualifiante ne sera pas
évalué.]

J'ai trouvé ce code sur la toile mais aucune indication sur ce "warning".

Michel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jérémy Jeanson
Le #19331411
Bonjour Mousnynao,

En lieu et place de :
Me.GetType().Assembly.GetEntryAssembly()
il faut écrire :
Assembly.GetAssembly(Me.GetType())

Car Assembly.GetEntryAssembly() est une méthode statique et comme te le
souligne Visual Studio, le framework interdit d'appeler un méthode
statique à partir d'une instance d'un objet.

Pour mieux comprendre, tu as peut être déjà constaté que si tu écris une
méthode statique dans une classe, tu ne peux pas appeler cette méthode
au seins de sa classe en la préfixant par Me.

Par exemple on ne peut pas écrire :
Public Class Class1

Public Shared Sub MaMethodeStatique()
'
End Sub

Public Sub MaMethodeDInstance()
Me.MaMethodeStatique()
End Sub

End Class

Mais on peut ecrire :
Public Class Class1

Public Shared Sub MaMethodeStatique()
'
End Sub

Public Sub MaMethodeDInstance()
MaMethodeStatique()
End Sub

End Class

--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Mousnynao
Le #19332961
Bonjour Jérémy,

Merci beaucoup pour ta réponse.

Très clair, très précis. Je débute avec les Assemblys et je suis un peu
perdu, alors ton aide est très apprécié.

Effectivement, j'avais déjà rencontré ce message (warning), mais j'ai
encore de la difficulté à l'interprèté lorque que je rencontre du nouveau
code.

Merci encore.

Michel

"Jérémy Jeanson" a écrit :

Bonjour Mousnynao,

En lieu et place de :
Me.GetType().Assembly.GetEntryAssembly()
il faut écrire :
Assembly.GetAssembly(Me.GetType())

Car Assembly.GetEntryAssembly() est une méthode statique et comme te le
souligne Visual Studio, le framework interdit d'appeler un méthode
statique à partir d'une instance d'un objet.

Pour mieux comprendre, tu as peut être déjà constaté que si tu écris une
méthode statique dans une classe, tu ne peux pas appeler cette méthode
au seins de sa classe en la préfixant par Me.

Par exemple on ne peut pas écrire :
Public Class Class1

Public Shared Sub MaMethodeStatique()
'
End Sub

Public Sub MaMethodeDInstance()
Me.MaMethodeStatique()
End Sub

End Class

Mais on peut ecrire :
Public Class Class1

Public Shared Sub MaMethodeStatique()
'
End Sub

Public Sub MaMethodeDInstance()
MaMethodeStatique()
End Sub

End Class

--
Jérémy JEANSON
MCP
http://www.jjeanson.fr



Publicité
Poster une réponse
Anonyme