2012-03-04 49 views
1

我使用Activator.CreateInstace()創建一個通用實例。但是,當我使用它來創建一個對象的實例:無法評估表達式:Activator.CreateInstance <T>()

public class SelectStageSaveData 
{ 
    public string GlobalPartnershipPoints { get; set; } 
} 

我得到的消息「無法計算表達式」當我調試的代碼,並試圖看到GlobalPartnershipPoints。在這種情況下,我認爲這個字符串的值是「空的」,但我無法獲得任何價值。有誰知道發生了什麼?提前致謝。

更新:在我創建instace

代碼:

if (!isolatedStorage.FileExists(file)) 
    { 
     this.SaveData<T>((T)Activator.CreateInstance(typeof(T)), file); 
    } 

if (!isolatedStorage.FileExists(file)) 
    { 
     this.SaveData<T>(Activator.CreateInstance<T>(), file); 
    } 

我得到兩個相同的結果。

+0

我們可以看到您調用CreateInstance()的代碼嗎? – 2012-03-04 20:29:34

+0

你能展示實例化代碼嗎? – 2012-03-04 20:30:18

+0

你如何看待它?步入SaveData並使用QuickWatch或鼠標懸停? – 2012-03-04 20:37:37

回答

1

我想這個字符串的值在這種情況下

是「空」直到你初始化屬性值將是null默認。如果你使用私人字段:

public class SelectStageSaveData 
{ 
    private string _GlobalPartnershipPoints = ""; 
    public string GlobalPartnershipPoints 
    { 
     get { return _GlobalPartnershipPoints;} 
     set { _GlobalPartnershipPoints = value; } 
    } 
} 

然後你應該得到「」作爲默認值。

希望它有幫助。

+0

是的,我犯了一個錯誤。預期值爲空。但我不明白的是爲什麼我得到「無法評估」的消息,而不是空值。 – Leila 2012-03-04 20:52:42

+0

設置此默認值的另一種方法是,可能會或可能不會比上述方式更好,它是定義默認的「SelectStageSaveData」構造函數以將屬性設置爲「」「''。 – 2012-03-04 21:20:41

+0

謝謝! – Leila 2012-03-04 23:30:45