CLS Roles

The Common Language Specification (CLS) defines three roles for CLS-compliant applications: framework, consumer, and extender.

Enhancements to the PowerScript language enable PowerBuilder .NET to support a CLS-extender role.

The WPF Window Application targets in PowerBuilder .NET are CLS extenders because they allow you to consume and extend the CLS framework. The .NET Assembly and WCF Services targets in the PowerBuilder .NET IDE support a framework role for CLS compliance, since the components generated from these targets can be consumed by any other .NET language.
CLS role Requirements
Framework Guarantees interoperability across different .NET languages. A CLS-compliant .NET library is called a framework.
Consumer A CLS consumer must be able to use CLS-compliant libraries, but cannot extend the CLS Framework. The CLS-compliant consumer must be able to:
  • Call any CLS-compliant method
  • Have a mechanism for calling methods for which names are keywords in the language
  • Create an instance of any CLS-compliant type
  • Read and modify any CLS-compliant field
  • Access any CLS-compliant property and event
  • Have a mechanism to use generic types and methods, and to access nested types
Extender A CLS extender must allow users to consume and extend the CLS Framework. Everything that applies to CLS consumers also applies to CLS extenders, but extenders must also be able to:
  • Define new nongeneric CLS-compliant types that extend CLS-compliant base types
  • Implement any CLS-compliant interface
  • Place CLS-compliant custom attributes on appropriate elements