在 .NET 應用中,直接使用 `ConfigurationManager` 讀取配置文件會造成強耦合,難以進行單元測試。通過包裝器模式配合依賴注入,可實現配置訪問的解耦與可測試性。
public interface IConfigurationReader {
string GetAppSettings(string key);
string GetConnectionString(string key);
}
public class ConfigurationReader : IConfigurationReader {
public string GetAppSettings(string key) {
return ConfigurationManager.AppSettings[key];
}
public string GetConnectionString(string key) {
return ConfigurationManager.ConnectionStrings[key].ConnectionString;
}
}
IUnityContainer container = new UnityContainer(); container.RegisterType();
var reader = container.Resolve(); var value = reader.GetAppSettings("hello"); Console.WriteLine(value);
將所有配置鍵定義在靜態類中,避免魔術字符串分散:
public static class ConfigKeys {
public const string DbConnection = "DbConnection";
public const string ApiEndpoint = "ApiEndpoint";
// ...
}
所有需要讀取配置的 .NET 應用,特別是追求高測試覆蓋率、採用分層架構或微服務架構的項目。