MCPcopy Create free account
hub / github.com/esengine/esengine / registerInjectable

Function registerInjectable

packages/core/src/Core/DI/Decorators.ts:309–330  ·  view source on GitHub ↗
(
    container: ServiceContainer,
    serviceType: ServiceType<T>,
    singleton: boolean = true
)

Source from the content-addressed store, hash-verified

307 * ```
308 */
309export function registerInjectable<T extends IService>(
310 container: ServiceContainer,
311 serviceType: ServiceType<T>,
312 singleton: boolean = true
313): void {
314 if (!isInjectable(serviceType)) {
315 throw new Error(
316 `${serviceType.name} is not marked as @Injectable(). ` +
317 'Please add @Injectable() decorator to the class.'
318 );
319 }
320
321 // 创建工厂函数,使用createInstance自动解析依赖
322 const factory = (c: ServiceContainer) => createInstance(serviceType, c);
323
324 // 注册到容器
325 if (singleton) {
326 container.registerSingleton(serviceType, factory);
327 } else {
328 container.registerTransient(serviceType, factory);
329 }
330}

Callers 1

DI.test.tsFile · 0.90

Calls 3

isInjectableFunction · 0.85
registerSingletonMethod · 0.45
registerTransientMethod · 0.45

Tested by

no test coverage detected