gpt4 book ai didi

c# - 如何在 ConfigurationSection 中使用自定义类型的值?

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

假设我有类型Point2D(这是示例),我如何将此类型与ConfigurationSection 一起使用——换句话说,为了从字符串创建我的类型的值,我必须实现哪些方法。

一种方法是提供TypeConverter,还有其他方法吗?在不引入额外类型的情况下,仅在我的自定义类型中(在此示例中为 Point2D)?

另一种方式,但它更像是一个技巧,例如具有已知类型 int 的属性 xy ,然后提供创建者属性以获取 Point2D——我不想走那条路。

更新:请求示例:

public sealed class MyConfig : ConfigurationSection
{
[ConfigurationProperty("LeftPoint", IsRequired = true),
TypeConverter(typeof(Point2DTypeConverter))]
public Point2D LeftPoint
{
get { return (Point2D )this["LeftPoint"]; }
set { this["LeftPoint"] = value; }
}

...
}

如您所见,我为 Point2D 使用了类型转换器,它可以正常工作。没问题。但是我想知道是否可以在我的类型 Point2D 中进行转换(真正从字符串解析),这样我就可以删除整个转换器(不是作为属性标记,而是完全删除)。

最佳答案

TypeConverter 对于 ConfigurationProperty 是一种或另一种形式。如果您不提供 - 如有必要,它将使用 TypeDescriptor.GetConverter 查找它。为此,您的类型本身应该使用 TypeConverter 属性进行修饰,因此您不能以这种方式摆脱它(尽管您可以将转换责任转移到类型本身)。您也可以使用通用的 TypeConverter,但为此您需要将目标类型传递给它,这使用 ConfigurationProperty 属性是不可能的(但如果您手动配置属性是可能的,不使用属性)。总而言之 - 总是涉及 TypeConverter。

关于c# - 如何在 ConfigurationSection 中使用自定义类型的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057218/

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