获取字段类型(无实例)

时间:2013-09-25 03:07:10

标签: c# types null field instance

我可以获得字段的类型吗? Type.GetType();仅返回实例的类型,因此如果设置了字段null,则无法获取类型。

注意:我不想使用反射〜

4 个答案:

答案 0 :(得分:1)

根据上下文GetPropertyPropertyType可能适合您。即如果您有对象类型和属性名称:

var typeOfLength = typeof(String).GetProperty("Length").PropertyType;

答案 1 :(得分:0)

当字段为空时,您是否只需要编译时类型尚不清楚。像这样的简单方法可以起作用:

public static class ReflectionExtensions
{
    public static Type GetCompileTimeType<T>(this T obj)
    {
        return typeof(T);
    }
}

您可以修改它检查null并返回实际类型,如果这是您想要的。

用法:

class A { }
class B : A { }

class C 
{
    private A a1, a2;
    public C()
    {
       a2 = new B();
       Console.WriteLine(a1.GetCompileTimeType()); // null but prints A
       Console.WriteLine(a2.GetCompileTimeType()); // actually a B but prints A
    }
}

答案 2 :(得分:0)

public class test
{
    private int fTestInt;
    private string fTestString;
}

您可以通过键入fTestInt.GetType()来获取字段类型。

如果您想要快速类型验证,可以使用。

if (fTestInt is int)
{
    Console.Write("I'm an int!");
}

不确定这是不是你问的问题。你的问题似乎很偏僻

答案 3 :(得分:0)

为什么不问问是否为空?

if (Type != null)
{
    return Type.GetType().Name;
}
else
{
    return "";
}