2014-04-04 53 views
0

我有接收Func<T,string>作爲參數和功能,我試圖做一個過載與Func<T,MvcHtmlString>Func鍵轉換

我目前發送對象爲Html.Partial("MyPartialPath", MyModel).ToString() ,我想調用該方法,無需多餘.ToString()擴展

所以,這是原來的方法:

public void Whatever(Func<T, string> partial) 
    { 
     this.myProperty= partial; 
    } 

而且我想是這樣創造的東西:

public void Whatever(Func<T, MvcHtmlString> partial) 
    { 
     this.myProperty= partial; // here fails because myProperty is of type Func<TRow, string> 
    } 

我想convert一個Func<T,MvcHtmlString>Func<T,string>

這裏是我試過

Func<TRow, string> test= t => partial.ToString(); //它不按預期工作(不具有相同的結果與原始方法)

這是轉換的正確方法,以及錯誤是在其他地方,或者我沒有按照我應該做的轉換?

+1

你是什麼意思「沒有與原始方法相同的結果」? –

+0

不給我部分視圖的內容。它返回null。 – Kosmog

回答

1

作爲一個快速射擊我說你在這裏有一個錯誤:

 
Func test= t => partial.ToString(); 

,因爲它引用,而不是它的結果的方法partial。 我想你可能是指/想要的是:

 
Func test= t => partial(t).ToString(); 

BTW:如果MvcHtmlString將從字符串派生,你的代碼會工作,因爲結果類型是協變的。但不幸的是,事實並非如此,它只是我的2美分作爲附註。

+0

謝謝!有效! – Kosmog

相關問題