C# 在服务类-ServiceStack中使用外部参数
我需要将外部参数发送到服务类中,我可以这样做,但我不知道这是否是最好的方法,以下是我所做的:C# 在服务类-ServiceStack中使用外部参数,c#,
servicestack,C#,
servicestack,我需要将外部参数发送到服务类中,我可以这样做,但我不知道这是否是最好的方法,以下是我所做的: public class Context : ApplicationContext { public Context() { var appHost = new AppHost(i, (ILayout)f); appHost.Init(); appHost.Start(listeningOn); } } public class App
public class Context : ApplicationContext
{
public Context()
{
var appHost = new AppHost(i, (ILayout)f);
appHost.Init();
appHost.Start(listeningOn);
}
}
public class AppHost : AppSelfHostBase
{
private readonly Init _init;
private readonly ILayout _activeForm;
public AppHost(Init i, ILayout f)
: base("ClientService", typeof(ClientService).Assembly)
{
_init = i;
_activeForm = f;
}
public override void Configure(Container container)
{
container.Register("init",_init);
container.Register("layout", _activeForm);
}
}
public class ClientService : Service
{
private Init _initConf;
public HttpResult Post(Person request)
{
_initConf = ServiceStackHost.Instance.Container.ResolveNamed<Init>("init");
}
}
公共类上下文:ApplicationContext
{
公共上下文()
{
var appHost=新的appHost(i,(ILayout)f);
appHost.Init();
appHost.Start(ListingOn);
}
}
公共类AppHost:AppSelfHostBase
{
私有只读初始化_Init;
私有只读ILayout\u activeForm;
公共AppHost(Init i,ILayout f)
:base(“ClientService”,typeof(ClientService).Assembly)
{
_init=i;
_activeForm=f;
}
公共覆盖无效配置(容器)
{
容器寄存器(“init”,_init);
容器。注册表(“布局”,_activeForm);
}
}
公共类ClientService:Service
{
私有Init_initConf;
公共HttpResult Post(个人请求)
{
_initConf=ServiceStackHost.Instance.Container.ResolveNamed(“init”);
}
}
它工作得很好,但我不确定这是不是最好的选择。。
你觉得怎么样?
谢谢在不需要的时候,在你的服务中引用国际奥委会是很难看的。你为什么不注册这些类型
public override void Configure(Container container)
{
container.Register(_init);
container.Register(_activeForm);
}
在您的服务中,您可以将它们声明为公共属性,并在创建服务时注入它们,例如:
public class ClientService : Service
{
public Init Init { get; set; }
public ILayout ActiveForm { get; set; }
public HttpResult Post(Person request)
{
//Use this.Init or this.ActiveForm
}
}
在不需要的情况下,在你的服务中引用国际奥委会是很难看的。你为什么不注册这些类型
public override void Configure(Container container)
{
container.Register(_init);
container.Register(_activeForm);
}
在您的服务中,您可以将它们声明为公共属性,并在创建服务时注入它们,例如:
public class ClientService : Service
{
public Init Init { get; set; }
public ILayout ActiveForm { get; set; }
public HttpResult Post(Person request)
{
//Use this.Init or this.ActiveForm
}
}