我可以获得字段的类型吗? Type.GetType();
仅返回实例的类型,因此如果设置了字段null
,则无法获取类型。
注意:我不想使用反射〜
答案 0 :(得分:1)
根据上下文GetProperty和PropertyType可能适合您。即如果您有对象类型和属性名称:
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 "";
}