1
我正在做一個應用程序,使用ServiceStack。我可以注入的對象沒有問題,但是,該對象可以服務類之外進行修改,所以,我需要重新注入再次 下面是代碼:服務堆棧注入對象
public class ClientManager: ApplicationContext{
public ClientManager(AppConfig appConfig)
{
_appConfig = appConfig;
_activeForm = LayoutFactory(appConfig.Layout);
var appHost = new AppHost(_activeForm, _appConfig);
var listeningOn = string.Format("http://*:{0}/", new Uri(appConfig.UrlBroker).Port);
appHost.Init();
appHost.Start(listeningOn);
var timerMetadata = new Timer(CheckMetadata, null, 0, 60000);
}
}
public class AppHost : AppSelfHostBase
{
private ILayout _layout;
private AppConfig _appConfig;
public AppHost(ILayout activeForm, AppConfig appConfig)
: base("ClientService", typeof(ClientService).Assembly)
{
_layout = activeForm;
_appConfig = appConfig;
}
public override void Configure(Container container)
{
container.Register("activeForm", _layout);
container.Register("config", _appConfig);
}
}
public class ClientService : Service
{
public HttpResult Post(Person request)
{
HttpResult response = new HttpResult();
_initConf = ServiceStackHost.Instance.Container.ResolveNamed<AppConfig>("config");
}
}
所以,該類ClientManager有一個線程這可以修改對象appConfig和activeForm(此對象被注入服務類) 現在,如果我修改對象,它不會再注入它。我認爲我應該處置AppHost,然後重新開始,你覺得怎麼樣? 謝謝
感謝您的評論。我按照你的建議做了。它仍然工作正常(對象被注入到服務類中)。但是,如果我將對象修改爲ClientManager類,則在服務類中,我看不到對象已更新.. –
看不到這是可能的,它必須注入相同的實例,它不能創建新的實例,它不知道如何。你確定你正在修改實例,而不是重新分配它,因爲它不會修改實例。 – mythz
對不起,我把錯誤的數據分配到實例中..謝謝! –