我做以下失敗的對象:System.Configuration.Cast沒有默認的構造函數
var temp = ConfigurationManager.AppSettings.Cast<KeyValueConfigurationElement>();
上面一行拋出一個錯誤,說這是無法施展。我可能看到的原因是類KeyValueConfigurationElement只有一個參數化的構造函數。沒有默認的構造函數。
你能幫忙解決這個問題嗎?
感謝 NISHANT
我做以下失敗的對象:System.Configuration.Cast沒有默認的構造函數
var temp = ConfigurationManager.AppSettings.Cast<KeyValueConfigurationElement>();
上面一行拋出一個錯誤,說這是無法施展。我可能看到的原因是類KeyValueConfigurationElement只有一個參數化的構造函數。沒有默認的構造函數。
你能幫忙解決這個問題嗎?
感謝 NISHANT
做轉換明確
var temp = ConfigurationManager.AppSettings
.Cast<object>()
.Select((a, i) => new KeyValueConfigurationElement(
ConfigurationManager.AppSettings.GetKey(i),
a.ToString()));
AppSettings
是NameValueCollection
它實現了非通用IEnumerable
接口。因此,需要.Cast<object>()
才能將其轉換爲IENumerable<T>
以用於連續的LINQ-Select。
您可以創建一個擴展方法來轉換值。
public static class NameValueCollectionExtensions
{
public static KeyValueConfigurationCollection CastToConfigurationCollection(this NameValueCollection settings)
{
var collection = new KeyValueConfigurationCollection();
for (int i = 0; i < settings.Count; i++)
{
var keyValue = new KeyValueConfigurationElement(settings.Keys[i], settings[i]);
collection.Add(keyValue);
}
return collection;
}
}
使用
var configurationCollection = ConfigurationManager.AppSettings.CastToConfigurationCollection();
我沒有看到的AppSettings的選擇方法 – Nishant
KeyValueConfigurationElement是一個.NET類和參數化的構造函數有兩個字符串(key和value) – Nishant
我添加了一個'。同時在'Select'之前投出