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