juin
2007
En C#, imaginons le code suivant :
{
public class Class1
{
}
}
défini dans une assembly A1 et le code :
{
class Class2
{
Class1 test;
}
}
défini dans une assembly A2 référençant l’assembly A1.
Pas de problème, c’est le même namespace, le compilateur a compris que la classe Class1 était celle de A1.
Si nous avions dit que test était de type NS.Class1, ça marchait aussi bien entendu.
Passons maintenant à la gestion VB :
Public Class Class1
End Class
End Namespace
dans A1 et
Public Class Class2
Private test As Class1
End Class
End Namespace
dans A2.
Ca ne compile pas, le compilateur ne connait pas Class1 ! D’ailleurs l’intellisence ne me propose que la classe Class2 sur le namespace NS !
Si on fait un Imports dans le fichier .vb associée à la classe Class2 :
Imports A1
Class1 n’est toujours pas connu ni NS.Class1 !
En fait, il faut faire un
Imports A1.NS
pour pouvoir définir
Public Class Class2
Private test As Class1
End Class
End Namespace
Sans Imports, cela donne :
Public Class Class2
Private test As A1.NS.Class1
End Class
End Namespace
Imaginons maintenant une classe Class3 d’une assembly A3.
Dans le fichier .vb associé à Class3, on a :
Imports A2
Si, dans Class3, on écrit
NS.Class1
On aura une erreur à la compilation comme quoi le compilateur ne sait pas de quel Assembly il s’agit !