gpt4 book ai didi

c# - 使用 Convert 将字符串转换为自定义类型

转载 作者:行者123 更新时间:2023-12-02 17:31:38 32 4
gpt4 key购买 nike

我正在从 XML 文件读取字符串值,我需要将其转换为某种(自定义)类型。

就我而言,我有一个 InputPatch 类,它指定所需的类型 [ValueType],因此我需要将字符串转换为 inputPatch.ValueType

我想做:

inputPatch.DefaultValue = Convert.ChangeType(
defaultValueAttribute.Value, inputPatch.ValueType,
CultureInfo.InvariantCulture);

但是对于我的 BitmapFilename 类(它有一个字符串构造函数),结果是

Invalid cast from 'System.String' to 'ProjectX.Node.BitmapFilename'.

那么,如何才能将字符串转换为我自己的 BitmapFilename 类?

最佳答案

我不会为此使用Convert;相反,您可以使用:

TypeConverter converter = TypeDescriptor.GetConverter(inputPatch.ValueType);
object value = converter.ConvertFromInvariantString(defaultValueAttribute.Value);

这确实需要您子类化TypeConverter,并标记您的类型的转换器。但是,它适用于所有标准类型,并且是可扩展的。

[TypeConverter(typeof(BitmapFilenameConverter))]
public class BitmapFilename {...}

class BitmapFilenameConverter : TypeConverter {
public override object ConvertFrom(ITypeDescriptorContext context,
CultureInfo culture, object value)
{
string s = value as string;
if(s != null) {
/***** YOUR CODE HERE ******/
} else {
return base.ConvertFrom(context, culture, value);
}
}
}

当然,还要编写转换器代码!

关于c# - 使用 Convert 将字符串转换为自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003488/

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