2 回答

TA貢獻1847條經驗 獲得超11個贊
在函數的多個實例中重用資源的方法是將其聲明為static. 例如,假設我想重用HttpClient:
public static class PeriodicHealthCheckFunction
{
private static HttpClient _httpClient = new HttpClient();
[FunctionName("PeriodicHealthCheckFunction")]
public static async Task Run(
[TimerTrigger("0 */5 * * * *")]TimerInfo healthCheckTimer,
ILogger log)
{
string status = await _httpClient.GetStringAsync("https://localhost:5001/healthcheck");
log.LogInformation($"Health check performed at: {DateTime.UtcNow} | Status: {status}");
}
}

TA貢獻1744條經驗 獲得超4個贊
C# 中沒有像 Native C++ 那樣的“函數作用域”變量。但是您可以使用許多類似的構造:
使用 Public get 但 private Set 創建一個屬性。這樣,只有類代碼(如構造函數)可以設置值。您會看到這種模式在 .NET Framework 中被大量使用。然而,它并不能真正避免意外地在類代碼中設置值。如果您從不在類代碼中的其他任何地方使用此值,效果最好。
另一個選項是“只讀”變量屬性。它強制要求該值必須設置一次(在構造函數中),但也只能設置一次。您仍然需要將實例交給構造函數或使用靜態。
另一種選擇是添加靜態變量來存儲數據。但這種模式是絕對不可取的。如果您永遠不需要第二組具有不同共享值的實例,那么您就輸了。這將會發生,就像垃圾收集一樣。我們有數十年的靜態價值觀適得其反的經驗。所以你真的應該保留實例變量。
另一種方法是添加工廠方法。如果實例需要設置,而您不能讓普通程序員使用您的代碼,則通常會使用它們。您甚至可以通過同時擁有公共構造函數和實例工廠方法來稍微打破該模式。如果您使用工廠方法,共享的東西將從它們調用的實例中復制過來。如果您使用公共構造函數,則會創建一個新的共享事物。
- 2 回答
- 0 關注
- 137 瀏覽
添加回答
舉報