У меня небольшие проблемы с правильной конфигурацией проводов. У меня следующие настройки
Маршрутизатор
func NewRouter(routes []RouterPath) AppRouter {
r := &appRouter{
routes: routes,
}
return r
}
Интерфейс маршрутизатора
type RouterPath interface {
Register(root *mux.Router) (p *mux.Router)
}
, и у меня мало контроллеровкоторый в настоящее время реализует этот интерфейс, лучший способ узнать, как создать провод для решения DI, это то, с чем у меня возникла проблема
var routersSet = wire.NewSet(
routers.NewAuth,
routers.NewRoot,
routers.NewUser,
routers.NewPhpInfo,
)
func RouterProvider(info *routers.PhpInfo, root *routers.Root, user *routers.User) web.AppRouter {
routes := []web.RouterPath{
info,
root,
user,
}
return routers.NewRouter(routes)
}
func Init() Kernel {
wire.Build(
routersSet,
RouterProvider,
NewKernel,
)
return nil
}
, - то, что мне пришлось сделать переходный слой в NewRouter, потому что он ожидает массивмаршруты.Который будет расти очень легко, и определение метода будет легко поддерживать.Я хотел бы видеть smtg, как положить wire.ProviderSet в массив и использовать его в качестве параметра NewRouter, но я не могу понять, как это сделать.
Есть ли лучший способ вместо этого?