NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

Metadata Extensibility

NGWS runtime metadata is extensible. There are three reasons this is important:

This extensibility comes in the following forms:

CLS Rule 32: CLS-compliant tools are only required to deal with a subset of the encodings of custom attributes. The only types that can appear in these encodings are: System.Type, System.String, System.Char, System.Boolean, System.Byte, System.Int16, System.Int32, System.Int64, System.Single, System.Double, and any enumeration type based on a CLS-compliant base type.

CLS (consumer): Must be able to read attributes encoded using the restricted scheme. Must be able to attach attributes based on existing attribute classes to any metadata that is emitted. Must implement the rules for the System.AttributeUsageAttribute.

CLS (extender): Must be able to author new classes and new attributes, as well as all requirements for CLS consumer.

CLS (framework): Must externally expose only attributes that are encoded within the CLS rules and following the conventions specified for System.AttributeUsageAttribute

CLS Rule 33: CLS-compliant tools shall not generate publicly visible required modifiers, and shall ignore optional modifiers they do not understand. They need not emit either kind of modifier, although they must be able to copy both kinds of modifiers should they exist in metadata that they import.

CLS (consumer): Must be able to read metadata containing optional modifiers and correctly copy signatures that include them. May ignore these modifiers in type matching and overload resolution. May ignore types that become ambiguous when the optional modifiers are ignored, or that use required modifiers.

CLS (extender): Must be able to author signatures that include optional modifiers.

CLS (framework): Must not use required modifiers in externally visible signatures unless they are marked as not CLS-compliant.