建议对外开放Context的定义 #42

Open
opened 5 years ago by lunny · 3 comments
lunny commented 5 years ago
Owner

Author: @crazystory

想在Context里注入一些自定义的东西.但是目前无法实现.
是否考虑下Context采用interface的方式,默认返回内置的Context

Author: @crazystory 想在Context里注入一些自定义的东西.但是目前无法实现. 是否考虑下Context采用interface的方式,默认返回内置的Context
Poster
Owner

Author: @qjebbs

先定义一个自定义的Ctx:

type Ctx struct {
	*tango.Context
	User       *User //自定义的字段
}
//SetContext is the implement for tango interface
func (c *Ctx) SetContext(ctx *tango.Context) {
	c.Context = ctx
	c.User = ... //设置User
}

然后使用这个Ctx替换 tango.Ctx就可以了:

type Action struct {
	Ctx
}
func (a *Action) Get() interface{} {
	return a.User.Name
}
Author: @qjebbs 先定义一个自定义的Ctx: ```Go type Ctx struct { *tango.Context User *User //自定义的字段 } //SetContext is the implement for tango interface func (c *Ctx) SetContext(ctx *tango.Context) { c.Context = ctx c.User = ... //设置User } ``` 然后使用这个Ctx替换 `tango.Ctx`就可以了: ```go type Action struct { Ctx } func (a *Action) Get() interface{} { return a.User.Name } ```
Poster
Owner

Author: @lunny

对啊,有Contexter中间件和接口啊

Author: @lunny 对啊,有Contexter中间件和接口啊
Poster
Owner

Author: @crazystory

...这个方法不错,可以暂时解决我的问题.
但是这个方法必须使用struct.Get模式
无法支持func(*tango.Context)的模式

Author: @crazystory ...这个方法不错,可以暂时解决我的问题. 但是这个方法必须使用struct.Get模式 无法支持func(*tango.Context)的模式
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: lunny/tango#42
Loading…
There is no content yet.