0

正在执行以下操作:

var temp = ConfigurationManager.AppSettings.Cast<KeyValueConfigurationElement>();

上面的行抛出一个错误,说它无法投射。我可能看到的原因是 KeyValueConfigurationElement 类只有一个参数化的构造函数。没有默认构造函数。

你能帮忙解决这个问题吗?

谢谢尼山特

4

2 回答 2

0

您可以创建一个扩展方法来转换值。

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();
于 2012-06-26T14:59:49.027 回答
0

显式进行转换

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。

于 2012-06-26T14:43:25.980 回答