c# - 检查类型是否是 CLR 对象

标签 c# xmlreader

我正在尝试序列化一个对象,并想知道 XmlReader.ReadElementContentAsObject()ReadElementContentAs() 是否可以使用某种类型。

我可以询问一个类型是否是 CLR 类型,以便我知道我可以将其传递给这些方法吗?

if(myType.IsCLRType) // how can I find this property?
    myValue = _cReader.ReadElementContentAsObject();

最佳答案

I think I'm looking for this list: http://msdn.microsoft.com/en-us/library/xa669bew.aspx

您可能可以使用 Type.GetTypeCode(type) 完成大部分工作,但坦率地说,我希望您最好的选择更简单:

static readonly HashSet<Type> supportedTypes = new HashSet<Type>(
    new[] { typeof(bool), typeof(string), typeof(Uri), typeof(byte[]), ... });

并检查supportedTypes.Contains(yourType)

没有神奇的预定义列表可以完全匹配您心目中的“此列表”。例如,TypeCode 不注释 byte[]Uri

关于c# - 检查类型是否是 CLR 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291789/

相关文章:

c# - 公共(public) API 的正确命名空间

c# - Try/Catch 不捕获异常

.net - 滥用 XmlReader ReadSubtree()

c# - 通过 XML 迭代?

c# - JavaScript 看不到声明的变量?

c# - 当我的程序运行时,来自扬声器的安静尖锐的声音

java - 如何将 XML 文档传递给 XMLReader?

c# - 加载 SyndicationFeed 和异步/等待

c# - 如何在不读取的情况下检查 xml 中是否存在另一个节点 - C#

C#、XML : move second namespace to root element