2013-10-21 55 views
0
private CompanySetting _companySettings= null; 
    public CompanySetting CompanySettings 
    { 
     get 
     {   
      _companySettings = _companySettings ?? getCompanySettings(); 
      return _companySettings; 
     } 
     set 
     { 
      _companySettings = value; 
     } 
    } 

我在我的viewmode中有上述屬性。我開始注意到,當我實例化這個類時,如果不調用屬性的get方法,屬性會自動設置。這意味着getCompanySettings被調用,從而加載了companysettings屬性。 我甚至在getCompanySettings方法中放置了一個斷點,並且我知道它不會在那裏中斷。這是一個.net的東西嗎?.net當您在設置屬性之前檢查null時加載屬性

+1

認沽斷點在二傳手和吸氣。 – SLaks

+0

聽起來像您正在使用某種類型的DI容器,它解決了依賴性併爲您設置了它。通過使用setter中的斷點來檢查。 –

+2

你怎麼知道它的集合?調試器是否在手錶中讀取屬性? –

回答

2

如果您使用的是Visual Studio調試器,它可能配置爲自動評估財產的getter,因爲他們被認爲是純粹的(從評估他們即沒有副作用)。如果你有一個屬性獲取方法,而不是表現爲這種方式,則需要添加DebuggerBrowsableAttribute屬性以防止其被調試器評估。

[DebuggerBrowsable(DebuggerBrowsableState.Never)] 
public CompanySetting CompanySettings 
{ 
    get 
    {   
     _companySettings = _companySettings ?? getCompanySettings(); 
     return _companySettings; 
    } 
    set 
    { 
     _companySettings = value; 
    } 
} 
相關問題