我可以得到一个字段的类型吗?Type.GetType();
仅返回实例的类型,因此如果设置了字段,null
我将无法获取类型。
注意:我宁愿不使用反射~
根据上下文GetProperty和PropertyType可能对您有用。即,如果您有对象类型和属性名称:
var typeOfLength = typeof(String).GetProperty("Length").PropertyType;
public class test
{
private int fTestInt;
private string fTestString;
}
您可以通过键入来获取字段类型fTestInt.GetType()
。
如果您想要快速类型验证,您可以使用。
if (fTestInt is int)
{
Console.Write("I'm an int!");
}
不确定这是否是您要问的。你的问题似乎是片面的。
为什么不问是否为 null ?
if (Type != null)
{
return Type.GetType().Name;
}
else
{
return "";
}
不清楚当字段为空时是否只需要编译时类型。像这样的简单方法可以工作:
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
}
}