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

Sub+Namespace

Tutti sanno del nesting separator (il segno "+") nel fully qualified name di una classe (in italiano come si dice? nome completo?).
Ma non tutti sanno che il segno "+" può comparire anche all'interno del nome di un namespace. Non in C#, però in IL sì.

Giochiamo un po':

// Foo.cs
namespaceA.BC
{
  class D{}
}

Compiliamo il codice C# con:

csc /target:library Foo.cs

otteniamo il codice IL:

ildasm Foo.dll /out=Foo.il

e in tutte e due le sezioni "CLASS STRUCTURE DECLARATION" e "CLASS MEMBERS DECLARATION" la dichiarazione del namespace la cambiamo da:

.namespace A.BC

a:

.namespace 'A.B+C'

e poi compiliamo il codice IL con:

ilasm /DLL Foo.il

Sorpresi del messaggio "Operation completed successfully"? Adesso il nome completo della classe D sarà A.B+C.D!

La morale? La morale è che non dovete mai cercare il "+" nel nome completo di un tipo come il nostro simpaticissimo Giancarlo perché rischiate di trovare cose che non esistono, come per esempio A.B oppure C.D :-)

Print | posted on giovedì 2 settembre 2004 00:51 | Filed Under [ Carillon .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET