获取字段的类型(无实例)
答
根据上下文GetProperty和PropertyType可以为你工作。即如果您有对象类型和属性名称:
var typeOfLength = typeof(String).GetProperty("Length").PropertyType;
答
您不清楚在字段为空时是否只需编译时类型。这样一个简单的方法可以工作:
public static class ReflectionExtensions
{
public static Type GetCompileTimeType<T>(this T obj)
{
return typeof(T);
}
}
您可以修改它,它检查空和返回实际的类型,如果这是你想要的。
用法:
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
}
}
答
public class test
{
private int fTestInt;
private string fTestString;
}
可以实现通过键入fTestInt.GetType()
获得字段类型。
如果您想要使用快速类型验证。不知道这是不是你问的。你的问题似乎部分。
答
为什么不直接问是否为空?
if (Type != null)
{
return Type.GetType().Name;
}
else
{
return "";
}
null不是一个类型..它的值。无论如何,该字段仍然是相同的类型。你应该事先检查null。 –