#############
C# API Primer
#############

.. toctree:: 
   :hidden:

   Bindings <cs/bindings>
   Library Loader <cs/loader>
   Wrapper Classes <cs/classes>
   Utility Classes <cs/utils>

The HOOPS Exchange C# API is **a managed overlay to the C API**, offering a streamlined interface for developers in the C# ecosystem.  
Built on **bindings to the underlying C API** binaries, it grants **full access to HOOPS Exchange’s capabilities** within a familiar C# environment.  

The C# API delivers the same functionalities as the C API, enabling tasks such as *CAD file import/export*, *geometry processing*, and *metadata extraction*.  

To get started, follow the steps in our :doc:`/tutorials/cs/environment-setup` tutorial, which will guide you through configuring your project and running your first C# application.  
For examples, explore our collection of C# sample applications on the :doc:`/sample_codes` page.  

The following diagram provides a visual overview of the key components of the C# API:  

.. figure:: cs-components.svg  
   :align: center  

Each component has a specific role in the API's architecture:  

:doc:`Library Loader <cs/loader>`  
  Simplifies the process of loading and unloading the C binaries and their associated functions.  

:doc:`Function and Struct Bindings <cs/bindings>`  
  Provides a 1:1 mapping to the C API, exposing structures, functions, and enumerations.  

:doc:`Utils <cs/utils>`  
  Provides utility facilities to ease communication between C and C# components.  

:doc:`High-Level API <cs/classes>`  
  A set of abstraction classes automating common HOOPS Exchange workflows, offering *OOP* and *RAII* features for streamlined development.  


The rest of this section dives deeper into each component, ensuring you’re well-equipped to harness the full potential of the HOOPS Exchange C# API.  
