gpt4 book ai didi

c# - 如何编写一个函数来读取 XElement.Value 并将其转换为 C# 中的指定类型?

转载 作者:数据小太阳 更新时间:2023-10-29 02:35:40 24 4
gpt4 key购买 nike

我有这个文件用于我的 settings.xml

  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Settings document for System Gazatter-->
<Settings>
<OutputState>2</OutputState>
<SystemPrefix>XCL</SystemPrefix>
<MaxNumSystems>2147483647</MaxNumSystems>
<OpenCluster>0</OpenCluster>
<GardenWorld>False</GardenWorld>
<StellarVariance>False</StellarVariance>
<StellarMassOverride allow="True">
<MinStellarMass>1.00</MinStellarMass>
<MaxStellarMass>2</MaxStellarMass>
</StellarMassOverride>
<NumberOfStarsOverride allow="False">1</NumberOfStarsOverride>
</Settings>

我想写一个类似这样的函数

public static T getSettingElementValue(XDocument settings, string elementName) {
return (T)(settingDoc.Element("Settings")
.Select(x=>x.Element(elementName))
.First()
.Value);
}

现在,我知道这是行不通的。 (它也缺少对调用的任何检查。)有什么方法可以做到这一点吗?或者我应该回到类似的东西。

public static string getSettingElementStringValue(...)
public static string getSettingElementDoubleValue(...)

最佳答案

这对我有用:

public static T getSettingElementValue<T>(XDocument settings, string elementName) {
return (T)Convert.ChangeType(settings.Element("Settings").Element(elementName).Value, typeof(T));
}

void Main()
{
var xml = XDocument.Load(@"C:\abc\blah.xml");

Console.WriteLine(getSettingElementValue<bool>(xml, "GardenWorld"));
}

...但我仍然会遵循这样的数据的建议,只使用 App.config 或更简单的东西。这也仅在 T 实现 IConvertible 时有效,因此您应该在 T 上添加该类型约束。

关于c# - 如何编写一个函数来读取 XElement.Value 并将其转换为 C# 中的指定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008945/

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