C# 如何自动确定值的最佳.NET类型匹配

C# 如何自动确定值的最佳.NET类型匹配,c#,types,C#,Types,我正在使用T4模板,从XML文件自动生成C#类定义。对于XML文档中的每个元素,我想确定该元素中内容的类型。是否有一个框架类可以处理从字符串值自动确定类型的问题?这是一个非常有趣的问题,但我担心您将很难在FCL中找到任何可以做到这一点的东西 如果您仔细想想,您的问题是一个相当独特的问题,您有一个已知的类型作为转换源,还有一个未知的输出类型。在使用.NET这样的框架进行日常编码时,这种情况不会经常出现 由于.NET framework设计用于强类型语言,因此类型非常重要,大多数情况下,我们知道需要

我正在使用T4模板,从XML文件自动生成C#类定义。对于XML文档中的每个元素,我想确定该元素中内容的类型。是否有一个框架类可以处理从字符串值自动确定类型的问题?

这是一个非常有趣的问题,但我担心您将很难在FCL中找到任何可以做到这一点的东西

如果您仔细想想,您的问题是一个相当独特的问题,您有一个已知的类型作为转换源,还有一个未知的输出类型。在使用.NET这样的框架进行日常编码时,这种情况不会经常出现

由于.NET framework设计用于强类型语言,因此类型非常重要,大多数情况下,我们知道需要什么类型,并且可以请求从某个通用源(如字符串或对象)到该特定类型的转换。这就是为什么我们有强制转换、转换方法(比如
Convert.ToInt32
等等),以及类似的东西。它们都被设计成允许我们直接声明转换的输出类型,因为我们知道我们想要得到什么


尽管如此,我很想知道是否有其他人写过类似的东西,因为在源代码中处理文本值的方式上,使其工作所涉及的解析必须与C#编译器本身非常相似。

您可能想看看反射的源代码和/或类,您可以在其中控制一些高级序列化内容。在过去,XSD在从XML文件生成初学者模式文件方面做得相当好。

没有,因为在任何情况下都没有最好的方法:
int
long
<代码>十进制或
双精度
?或者为什么不只是
string
?(仅仅因为它在这个特殊的地方写了“1”,并不意味着它一般不应该是字符串!)。总而言之,这听起来是个坏主意。您的使用场景是什么?查看RestSharp(RestSharp.org),它作为一个用例可能更有意义。WCF REST Toolkit有一个“将XML粘贴为类型”功能,可以做到这一点,所以我知道这是可能的。我有一种感觉,我最终会得到一个受支持类型的列表,然后使用一堆TryParse调用逐个检查它们,直到其中一个成功并使用为止。@John-不幸的是,这可能是你最好的选择。这不会是世界末日。可以用XML表示的CLR类型只有这么多。我在编写自己的反序列化程序时了解到:)