Hi James,

Thanks for good words about my book. 

To answer your question: The class augmentation is not mentioned in ECMA spec, because 
in this spec IL Assembler is used mostly as a mean to describe the metadata and IL. 
The class augmentation doesn't change anything in this regard, so it was considered 
irrelevant to the spec.

You might also notice that actual implementation of IL Assembler is a superset of the 
spec'ed features. Some features, such as TLS constants and unmanaged exports, were 
deemed "implementation-specific" and not subject to standardization.

The necessity of forward class declaration (first declare the classes including the 
nested ones, then declare them with the members) is based on the class augmentation 
principle. The forward class declaration is strongly recommended for IL Assembler 
v.1.0 and v.1.1., because of some internal IL Assembler problems. In further versions 
of IL Assembler, the internal handling of the class declarations is different, so 
there will be no need for the forward class declaration.

Thanks,
Serge


-----Original Message-----
From: James Michael DuPont [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 13, 2003 3:29 AM
To: Serge Lidin; [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: Augmented classes and ILASM


Hi Serge,

I am resending this, so that it will go to the whole list
First of all, I would like to thank you for writing such a good book,
Inside IL assembler. I have a question about the "Augmented" classes
feature : 

I cannot seem to find the area in the ECMA spec that covers the ability
to augment classes, and reopen them. You cover it in your book, and
rotor supports it, but still, i would like to resolve exactly where
this is covered in the spec, can you advise?

In in IL produced by Rotors ILDASM, there a number for "Forwards" that
are declared for clases, with the pattern :

I have opened a bug report for the dotgnu ilasm based on the il created
by rotor : 
https://savannah.gnu.org/bugs/?func=detailbug&bug_id=2196&group_id=353

.class private auto ansi beforefieldinit DotGNU 
extends [mscorlib]System.Object 
{ 
} // end of class DotGNU 


// =============== CLASS MEMBERS DECLARATION =================== 
// note that class flags, 'extends' and 'implements' clauses 
// are provided here for information only 

.class private auto ansi beforefieldinit DotGNU 
extends [mscorlib]System.Object 
{ 
.field static assembly literal string Title = "DotGNU.Testing.dll" 

} // end of class DotGNU 


mike



=====
James Michael DuPont
http://introspector.sourceforge.net/

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

Reply via email to