gpt4 book ai didi

.net - 如何在 ConfigurationSection 中包含简单的集合

转载 作者:行者123 更新时间:2023-12-03 21:06:57 25 4
gpt4 key购买 nike

有没有办法让我在 ConfigurationSection 的自定义子类中包含一个简单的字符串数组或 List ? (或者简单数据对象的数组或通用列表,就此而言?)

我开始熟悉新的(而且非常冗长)ConfigurationSection、ConfigurationElement 和 ConfigurationElementCollection 类,但我还不是专家。

似乎 ConfigurationSection 应该自己处理简单的集合/列表,而不必为每个集合/列表创建自定义的 ConfigurationElementCollection 子类。但是我没有在网上找到任何关于这种能力的引用。

编辑:接受 Dan 的回答作为答案,因为这可能是我最接近“旧式”configSections 的事情。我总是发现任何 XmlSerializable 对象都可以轻松成为 configSection 是一件简单、灵活和优雅的事情。我确信新框架更强大;然而令人遗憾的是,它对于简单的配置结构来说太麻烦了,我们只能回到 String.Split()。

最佳答案

这是一个简单的例子。

//START CODE


//MyCompany.MyProject.csproj which results in MyCompany.MyProject.dll
//Add a Folder called "Configuration"

namespace MyCompany.MyProject.Configuration
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Configuration;


public class TransformationToDirectoryMapping : ConfigurationElement
{

private const string FRIENDLY_NAME = "FriendlyName";
private const string PICKUP_FOLDER = "PickupFolder";

[ConfigurationProperty(FRIENDLY_NAME, DefaultValue = "", IsKey = false, IsRequired = true)]
public string FriendlyName
{
get
{
return ((string)(base[FRIENDLY_NAME]));
}
set
{
base[FRIENDLY_NAME] = value;
}
}

[ConfigurationProperty(PICKUP_FOLDER, DefaultValue = "", IsKey = true, IsRequired = true)]
public string PickupFolder
{
get
{
return ((string)(base[PICKUP_FOLDER]));
}
set
{
base[PICKUP_FOLDER] = value;
}
}



}

//-----------------------------------------------------------------------

//-----------------------------------------------------------------------

[ConfigurationCollection(typeof(TransformationToDirectoryMapping))]
public class TransformationToDirectoryMappingCollection : ConfigurationElementCollection
{

protected override ConfigurationElement CreateNewElement()
{
return new TransformationToDirectoryMapping();
}

protected override object GetElementKey(ConfigurationElement element)
{
return ((TransformationToDirectoryMapping)(element)).PickupFolder;
}


public TransformationToDirectoryMapping this[int idx]
{
get
{
return (TransformationToDirectoryMapping)BaseGet(idx);
}
}

new public TransformationToDirectoryMapping this[string key]
{
get
{
return (TransformationToDirectoryMapping)BaseGet(key);
}
}
}

//-----------------------------------------------------------------------

//-----------------------------------------------------------------------

public class TransformationToDirectoryMappingConfigSection : ConfigurationSection
{
private const string TRANSFORMATION_TO_DIRECTORY_MAPPINGS = "TransformationToDirectoryMappings";

[ConfigurationProperty(TRANSFORMATION_TO_DIRECTORY_MAPPINGS)]
public TransformationToDirectoryMappingCollection TransformationToDirectoryMappingItems
{
get { return ((TransformationToDirectoryMappingCollection)(base[TRANSFORMATION_TO_DIRECTORY_MAPPINGS])); }
}
}

//-----------------------------------------------------------------------

//-----------------------------------------------------------------------

public static class MyRetriever
{
public const string MAPPINGS_CONFIGURATION_SECTION_NAME = "TransformationToDirectoryMappingsSection";

public static TransformationToDirectoryMappingCollection GetTheCollection()
{
TransformationToDirectoryMappingConfigSection mappingsSection = (TransformationToDirectoryMappingConfigSection)ConfigurationManager.GetSection(MAPPINGS_CONFIGURATION_SECTION_NAME);
if (mappingsSection != null)
{
return mappingsSection.TransformationToDirectoryMappingItems;
}
return null; // OOPS!

}
}

}

//配置文件的XML:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="TransformationToDirectoryMappingsSection" type="MyCompany.MyProject.Configuration.TransformationToDirectoryMappingConfigSection, MyCompany.MyProject"/>
</configSections>

<TransformationToDirectoryMappingsSection>
<TransformationToDirectoryMappings>
<add FriendlyName="Hello" PickupFolder="C:\WUWUTemp\pickups\pickup11\" />
<add FriendlyName="GoodBye" PickupFolder="C:\WUWUTemp\pickups\pickup12\" />
</TransformationToDirectoryMappings>
</TransformationToDirectoryMappingsSection>
</configuration>

关于.net - 如何在 ConfigurationSection 中包含简单的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699047/

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