2013-09-25 144 views
0

我可以獲取字段的類型嗎? Type.GetType();只返回一個實例的類型,所以如果字段設置爲null我不能得到類型。獲取字段的類型(無實例)

注意:我寧願不使用反射〜

+0

null不是一個類型..它的值。無論如何,該字段仍然是相同的類型。你應該事先檢查null。 –

回答

1

根據上下文GetPropertyPropertyType可以爲你工作。即如果您有對象類型和屬性名稱:

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

您不清楚在字段爲空時是否只需編譯時類型。這樣一個簡單的方法可以工作:

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 
    } 
} 
0
public class test 
{ 
    private int fTestInt; 
    private string fTestString; 
} 

可以實現通過鍵入fTestInt.GetType()獲得字段類型。

如果您想要使用快速類型驗證。不知道這是不是你問的。你的問題似乎部分。

0

爲什麼不直接問是否爲空?

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