gpt4 book ai didi

c# - 具有基本类型的 ConfigurationElementCollection

转载 作者:行者123 更新时间:2023-11-30 20:03:22 24 4
gpt4 key购买 nike

我正在使用 System.Configuration 命名空间类型来存储我的应用程序的配置。我需要存储原始类型 (System.Double) 的集合作为该配置的一部分。创建以下内容似乎有点矫枉过正:

[ConfigurationCollection(typeof(double), AddItemName="TemperaturePoint", 
CollectionType=ConfigurationElementCollectionType.BasicMap)]
class DoubleCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return // Do I need to create a custom ConfigurationElement that wraps a double?
}

protected override object GetElementKey(ConfigurationElement element)
{
return // Also not sure what to do here
}
}

我无法想象我是第一个遇到这个问题的人。有什么想法吗?

最佳答案

没有明确的“嘿,我想在此处填充值列表”处理程序,但您有几个选择:

实现自定义 IConfigurationSectionHandler(比元素集合等更简单)并通过以下方式引用:

<configSections>
<sectionGroup name="mysection" type="type of handler"/>
</configSections>

<mysection>
some xml representation of values
</mysection>

搭载一个现有的处理程序,例如 SingleTagSectionHandler - 这是一个看起来很毛茸茸的衬垫,它从配置文件中的这个条目中提取一组值:

<configuration>
<configSections>
<section name="TemperaturePoints"
type="System.Configuration.SingleTagSectionHandler"
allowLocation="true"
allowDefinition="Everywhere"/>
</configSections>

<TemperaturePoints values="1,2,3,4,5,6,7,8,9,10"/>
</configuration>


var values = ((string)((Hashtable)ConfigurationManager
.GetSection("TemperaturePoints"))["values"])
.Split(',')
.Select(double.Parse);

或者分开一点:

var section = (Hashtable)ConfigurationManager.GetSection("TemperaturePoints");
var packedValues = (string)section["values"];
var unpackedValues = packedValues.Split(',');
var asDoubles = unpackedValues.Select(double.Parse).ToArray();

关于c# - 具有基本类型的 ConfigurationElementCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com