logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class ServiceExtensionCreator.Input

    Everything needed to generate one service extension.

    Inheritance
    object
    ServiceExtensionCreator.Input
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    Namespace: Serenity.ServiceExtensionCreator.Editor
    Assembly: Serenity.ServiceExtensionCreator.Editor.dll
    Syntax
    public sealed class ServiceExtensionCreator.Input

    Constructors

    Input()

    Declaration
    public Input()

    Fields

    AggregateName

    The aggregate to extend (an Name from Discover()). Used only when Kind is Service.

    Declaration
    public string AggregateName
    Field Value
    Type Description
    string

    AppendToPipelineProfile

    When true and Wiring is PipelineReplace, the task asset is appended to the resolved UnityInitializationPipelineProfile.Tasks list; otherwise the README documents the manual step.

    Declaration
    public bool AppendToPipelineProfile
    Field Value
    Type Description
    bool

    AsmdefMode

    Declaration
    public ServiceExtensionCreator.AsmdefMode AsmdefMode
    Field Value
    Type Description
    ServiceExtensionCreator.AsmdefMode

    BaseLayer

    Ignored for every kind other than Service — every other kind always builds on the Infrastructure layer (a store/repository/gateway/factory IS an infrastructure adapter by nature; there is no "Business" shape for one).

    Declaration
    public ServiceExtensionCreator.BaseLayer BaseLayer
    Field Value
    Type Description
    ServiceExtensionCreator.BaseLayer

    ExtensionName

    User-facing extension name; combined with the extension point's name to form the generated type name.

    Declaration
    public string ExtensionName
    Field Value
    Type Description
    string

    ExtensionPointName

    The extension point to extend for every Kind other than Service (an Name from Discover(), e.g. "BlobStore", "ScoreRepository"). Ignored for the Service kind — use AggregateName instead.

    Declaration
    public string ExtensionPointName
    Field Value
    Type Description
    string

    GenerateReadme

    Declaration
    public bool GenerateReadme
    Field Value
    Type Description
    bool

    GenerateTestStub

    Declaration
    public bool GenerateTestStub
    Field Value
    Type Description
    bool

    Kind

    Which kind of extension point to generate. Defaults to Service for back-compat — a spec that only sets AggregateName behaves exactly as before.

    Declaration
    public ExtensionPointKind Kind
    Field Value
    Type Description
    ExtensionPointKind

    NamespaceOverride

    Root namespace every generated layer's namespace is built from ({RootNamespace}.{CodeLayer}.Services, {RootNamespace}.Installation.Installers, {RootNamespace}.Tests); empty defaults to the composed root (the service type name minus its trailing "Service").

    Declaration
    public string NamespaceOverride
    Field Value
    Type Description
    string

    RegisterAsAddressables

    When false, generated .asset outputs are not registered as Addressables — tests opt out so they do not pollute the project's Addressables settings.

    Declaration
    public bool RegisterAsAddressables
    Field Value
    Type Description
    bool

    Style

    Declaration
    public ServiceExtensionCreator.Style Style
    Field Value
    Type Description
    ServiceExtensionCreator.Style

    SubclassBaseTypeName

    Which base to subclass, as a simple or full type name from the extension point's EligibleSubclassBases/EligibleSubclassBases. Empty picks the canonical/first eligible base (the V1 behavior). Ignored unless Style is InfrastructureSubclass.

    Declaration
    public string SubclassBaseTypeName
    Field Value
    Type Description
    string

    TargetFolderPath

    Project-relative parent folder the generated aggregate layout is created under (e.g. "Assets/Game/Scripts/Score") — must already exist; every layer folder is created beneath it.

    Declaration
    public string TargetFolderPath
    Field Value
    Type Description
    string

    Wiring

    Ignored for every kind other than Service — every other kind's wiring shape is dictated entirely by Kind (Store/Installer always generate a backend-definition asset, Repository/Gateway always generate an installer-hook subclass when one is discoverable, Factory never generates wiring), never a free user choice.

    Declaration
    public ServiceExtensionCreator.Wiring Wiring
    Field Value
    Type Description
    ServiceExtensionCreator.Wiring
    In this article
    © 2026 Serenity. All Rights Reserved