2012-02-20 189 views
1

我不知道任何人都可以給我講解一下:在構造函數中DynamicViewDataDictionary.cs中發生了什麼?

internal sealed class DynamicViewDataDictionary : DynamicObject { 
    private readonly Func<ViewDataDictionary> _viewDataThunk; //// eg() => ViewData 

public DynamicViewDataDictionary(Func<ViewDataDictionary> viewDataThunk) 
{ 
    _viewDataThunk = viewDataThunk; 
} 

private ViewDataDictionary ViewData { 
    get { 
     ViewDataDictionary viewData = _viewDataThunk(); 
     Debug.Assert(viewData != null); 
     return viewData; 
    } 
} 
    ................. 

這在WebViewPage實例爲ViewBag財產,與 ()=>的ViewData。所以看來這裏的ViewData屬性會返回自己這個func()?這裏發生了什麼,爲什麼這樣做?

回答

1

我只能推測,但也許這樣做是爲了在測試過程中提供幫助。有了一個函數,你可以在執行期間改變返回值。

+1

聰明的猜測:-)這正是他們在'DynamicViewDataDictionaryTest'中所做的。 – 2015-06-06 14:22:49