2.9 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||
|---|---|---|---|---|---|---|---|
|
2026-04-17T16:35:08.366069+00:00 | zai-org/GLM-5-FP8 | 1 | 97facc88d83d9155 |
ServiceManager Module Documentation
1. Purpose
The ServiceManager module provides a service locator pattern implementation that enables loose coupling between components. It allows a component to publish an implementation of a singleton interface (service) that other components can retrieve without knowing the publisher. The module includes an event system (IServicePublishedEvent/ServicePublishedEvent) that notifies subscribers when services are published or unpublished, enabling reactive dependency management across the application.
2. Public Interface
IServicePublishedEvent (interface)
File: IServicePublishedEvent.cs
Event contract fired when a service interface is published or unpublished.
| Property | Type | Description |
|---|---|---|
ServiceType |
Type |
Returns the type of service being published/unpublished. |
IsPublished |
bool |
Returns true if the service is being published, false if being unpublished. |
ServicePublishedEvent (class)
File: ServicePublishedEvent.cs
Concrete implementation of IServicePublishedEvent.
| Property | Type | Accessor | Description |
|---|---|---|---|
ServiceType |
Type |
get; internal set; |
The type of service being published/unpublished. |
IsPublished |
bool |
get; internal set; |
true if publishing, false if unpublishing. |
ServiceManager (static class)
File: ServiceManager.cs
Static service locator that manages publication and retrieval of singleton services.
Methods
| Signature | Description |
|---|---|
void Publish<T>(T item) where T : class |
Publishes a service implementation for interface type T. Throws ArgumentException if T is already published. |
void Publish(object item, IEnumerable<Type> interfaceList, bool skipPublishedInterfaces) |
Publishes a single object as the implementation for multiple interfaces. If skipPublishedInterfaces is false, throws ArgumentException for any already-published interface; if true, silently skips already-published interfaces. |
bool Exists<T>() where T : class |
Returns true if interface type T has been published; otherwise false. |
bool Exists(Type t) |
Returns true if the specified interface type has been published; otherwise false. |
T Get<T>() where T : class |
Returns the published service for interface type T. Throws ArgumentException if T has not been published. |
void Clear<T>() where T : class |
Unpublishes the service for interface type T if it exists. Fires an unpublish event. |
| `void Clear(IEnumerable |