2012-03-04 47 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