如何在 ASP.NET Core Web API 應用程式中創建全域變數?在 ASP.NET MVC 中,我可以這樣做:
Application["<variableName>"] = <value>
我在我的 Web API 應用程式中嘗試了相同的方法,但找不到與之等效的方法。我看到了一些建議我存盤資料的解決方案appsettings.json,但是由于我要存盤在全域變數中的資料不是靜態的,所以我不能使用該設定。我需要在運行時設定不同的資料。我怎樣才能做到這一點?請幫我。
uj5u.com熱心網友回復:
專案中的某處
public static class Config{
public static Dictionary<string,string> Application = new Dictionary<string,string>();
}
別處
Config.Application["froop"] = "noodle";
當然,您將不得不處理比賽條件等
uj5u.com熱心網友回復:
我們可以使用Singleton_pattern,在 .net 核心中創建一個Application靜態物件。
我們也可以嘗試使用依賴注入,在你的代碼中注冊一個如下的單例物件。
ConcurrentDictionary在ApplicationInstance課堂上寫一個屬性。
public class ApplicationInstance {
public ConcurrentDictionary<string,object> Application { get; } = new ConcurrentDictionary<string, object>();
}
public void ConfigureServices(IServiceCollection services){
services.AddSingleton<ApplicationInstance>();
}
那么我們可能會使用這個物件
public class HomeController : ControllerBase
{
private readonly ApplicationInstance _application;
public HomeController(ApplicationInstance application)
{
this._application = application;
}
//use _application["test"] instance in your code
}
我會用它ConcurrentDictionary來幫助我們避免在多執行緒同時訪問同一物件時發生的競速條件。
uj5u.com熱心網友回復:
首先感謝大家抽出時間來幫助我。我采用了@pm100 的解決方案并稍作修改以適合我的目的。我無法直接使用它,因為我正在使用 SonarLint 并且它顯示了一些問題。所以我用 aKeyValuePair而不是Dictionary這樣:
public static class GlobalData
{
public static KeyValuePair<string,object> Application { get; set; }
}
我在我的代碼中使用了它,例如:
string value = GlobalData.Application.Value
幸運的是它沒有任何問題。所以再次感謝大家對我的幫助,
問候,
注意安全,
阿瓊
注意我明天會把它標記為答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431769.html
