0

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

注意:我宁愿不使用反射~

4

4 回答 4

1

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

var typeOfLength = typeof(String).GetProperty("Length").PropertyType;
于 2013-09-25T03:17:02.250 回答
0
public class test
{
    private int fTestInt;
    private string fTestString;
}

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

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

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

不确定这是否是您要问的。你的问题似乎是片面的。

于 2013-09-25T03:41:44.700 回答
0

为什么不问是否为 null ?

if (Type != null)
{
    return Type.GetType().Name;
}
else
{
    return "";
}
于 2013-09-25T04:38:01.293 回答
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
    }
}
于 2013-09-25T03:25:31.450 回答