我有一个函数接收Func<T,string>
作为参数,我试图用Func<T,MvcHtmlString>
重载
我目前发送的对象是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();
//它没有按预期工作(没有与原始方法相同的结果)
这是正确的转换方式吗,错误发生在其他地方,或者我没有按照自己的意愿进行转换?
答案 0 :(得分:1)
快速拍摄,我说你在这里犯了错误:
Func test= t => partial.ToString();
因为它引用方法partial
而不是结果。
我想你的意思是什么:
Func test= t => partial(t).ToString();
BTW:如果MvcHtmlString
派生自String,那么您的代码就可以工作,因为结果类型是协变的。但不幸的是,事实并非如此,只是我的2美分作为旁注。