servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

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
    }
}