Module

Learn about Slice modules.

A module is a naming scope for Slice types. It allows you to define and reference different Slice types with the same name, provided they are in different scopes (modules).

Slice uses :: as its scope resolution operator.

For example:

AnimalKingdom.slice
module AnimalKingdom
compact struct Lion { ... } // in module AnimalKingdom
Game.slice
module Game
interface Lion {
getModel() -> AnimalKingdom::Lion
}

You can split the definitions within the same module into multiple Slice files.

A module can have sub-modules, sub-sub-modules etc. at any depth. Each level is separated by ::. For example:

slice
module Res::Vacation
// definitions in the Vacation sub-module...

A Slice module is mapped to a C# namespace with the same name converted to Pascal case.

You can customize this mapping with the cs::namespace attribute and remap the module to the specified namespace. This attribute accepts a single string argument: the name of the C# namespace.

For example:

slice
[cs::namespace("Reservation.Bundles")]
module Res::Vacation
...
C#
namespace Reservation.Bundles;
...

Was this page helpful?

CookiesYour privacy
This website uses cookies to analyze traffic and improve your experience.
By clicking "Accept," you consent to the use of these cookies. You can learn more about our cookies policy in our Privacy Policy.