Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

GetType(GetType)

In Visual Basic .NET, la keyword GetType è più vicina alla BCL rispetto alla keyword corrispondente typeof in C#. Questa vicinanza però, non deve creare confusione tra keyword e metodo. Mi spiego con un esempio tipo quiz :-)

Supponiamo di avere questi due file in Visual Basic .NET, Foo.vb:

' Foo.vb
Public Class Foo : End Class

e Test.vb:

' Test.vb
Imports System
Class Test
  Shared Sub Main()
    Console.WriteLine(Type.GetType(GetType(Foo).FullName))
  End Sub
End
Class

che compilano senza errori. Il risultato dell'esecuzione di Test però, dipende dalle "compiler option" con cui li abbiamo compilati:

  • se compiliamo con:

vbc test.vb foo.vb
oppure con:
vbc /t:module foo.vb
vbc /addmodule:foo.netmodule test.vb
l'esecuzione di Test stampa Foo a console;

  • se invece compiliamo con:

vbc /t:library foo.vb
vbc /r:foo.dll test.vb
l'esecuzione di Test non stampa niente (l'espressione è Nothing).

La spiegazione sta in questo frammento della Reference:

"If typeName includes only the name of the Type, this method searches in the calling object's assembly, then in the mscorlib.dll assembly".

Nel primo caso il tipo Foo si trova nell'assembly chiamante (o in un suo modulo) ma nel secondo caso si trova in un altro assembly (foo.dll).

Print | posted on mercoledì 30 marzo 2005 05:04 | Filed Under [ Carillon .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET