gpt4 book ai didi

.net - 从 .NET 类型获取 XML 数据类型?

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:47 26 4
gpt4 key购买 nike

我想知道是否有一个库 - 在 .NET 或其他方面 - 可以将 .NET 类型(例如 IntegerString 等)转换为XML datatypes (例如,intstring)。请注意,我要转换的是类型,而不是变量的内容。例如:

var xmlType = Convert.ToXmlType(typeof(bool));
Assert.That(xmlType.ToString(), Is.EqualTo("boolean"));

我不介意制作一个查找表,因为我没有处理太多类型,但我认为如果已经存在的话,重用这样的东西会很好。

最佳答案

您可以使用以下代码创建映射,但它不是一对一的映射。将其减少为一对一将必须是您端的实现细节:

var mapping = (from XmlTypeCode cc in Enum.GetValues(typeof(XmlTypeCode))
let xt = XmlSchemaType.GetBuiltInSimpleType(cc)
where xt != null
group cc by xt.Datatype.ValueType into gg
select new { Type = gg.Key, XmlTypeCodes = gg.ToArray() })
.ToDictionary(m => m.Type, m => m.XmlTypeCodes);

示例输出:

System.Boolean => Boolean
System.Byte => UnsignedByte
System.Byte[] => HexBinary,Base64Binary
System.DateTime => DateTime,Time,Date,GYearMonth,GYear,GMonthDay,GDay,GMonth
System.Decimal => Decimal,Integer,NonPositiveInteger,NegativeInteger,NonNegative
Integer,PositiveInteger
...

解决一对一问题的体面方法是获取代码表中的第一个条目,该条目适用于除 String 之外的所有类型。这也可能不适用于较新的 BCL 类型,但可能会继续下去。重新排列 XmlTypeCode 枚举对 MS 来说是一个重大改变,但这并不是说这是万无一失的:

// same as above except the ToDictionary
.ToDictionary(
m => m.Type,
m => m.Type != typeof(string) ? m.XmlTypeCodes.First() : XmlTypeCode.String);

关于.net - 从 .NET 类型获取 XML 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6767550/

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