【问题标题】:Get type of null array获取空数组的类型
【发布时间】:2009-11-19 23:24:35
【问题描述】:

我正在处理一些序列化例程,我需要一种方法来获取输入数组的类型。

假设我有以下对象:

class myclass {
    public int foo;
    public byte[] bar;
}

现在我可以使用GetType() 获取myclass.foo 的类型。如果我说“myclass.bar = new byte[0]”,我可以通过使用GetElementType()HasElementTypeIsArray 来推断bar 是一个字节数组。

但是,如果我从不设置 bar 并将其保留为 null,我将无法找到从对象中获取类型信息的方法。如果我这样做myclass.foo.GetType(),我得到的只是一个空值。

在这种情况下,无论如何可以推断“bar”的类型吗?

【问题讨论】:

标签: c# .net types


【解决方案1】:

不存在的对象没有类型。获取null 引用的类型没有意义。您正在寻找的实际上是该字段的类型。您可以通过反映类型声明字段(在本例中为myclass)来实现。

【讨论】:

    【解决方案2】:

    我认为反射应该起作用 -

    typeof(myclass).GetField("bar").FieldType
    

    【讨论】:

    • 我没有收到带有该代码的 NullReferenceException,您也不应该(除非该字段不存在,在这种情况下 Type.GetField(string) 将返回 null,但只要您的名字是正确的,你不应该得到 NullReferenceException)。
    • dsolimano 的方法应该可以工作,MSDN 的参考有类似的东西:msdn.microsoft.com/en-us/library/t0cs7xez.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2019-11-17
    • 2021-03-06
    • 2011-05-07
    相关资源
    最近更新 更多