From 7f4c4348c08fed64bd3074d8dc56d5e3b6f3dca9 Mon Sep 17 00:00:00 2001 From: Snider Date: Tue, 24 Mar 2026 21:16:01 +0000 Subject: [PATCH] fix: Service() returns instance, ServiceFor uses type assertion directly Co-Authored-By: Virgil --- service.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/service.go b/service.go index 1a420d9..20e2419 100644 --- a/service.go +++ b/service.go @@ -43,9 +43,16 @@ type serviceRegistry struct { func (c *Core) Service(name string, service ...Service) Result { if len(service) == 0 { c.Lock("srv").Mutex.RLock() - v, ok := c.services.services[name] + svc, ok := c.services.services[name] c.Lock("srv").Mutex.RUnlock() - return Result{v, ok} + if !ok || svc == nil { + return Result{} + } + // Return the instance if available, otherwise the Service DTO + if svc.Instance != nil { + return Result{svc.Instance, true} + } + return Result{svc, true} } if name == "" { @@ -132,11 +139,7 @@ func ServiceFor[T any](c *Core, name string) (T, bool) { if !r.OK { return zero, false } - svc := r.Value.(*Service) - if svc.Instance == nil { - return zero, false - } - typed, ok := svc.Instance.(T) + typed, ok := r.Value.(T) return typed, ok }