功能转换

时间:2014-04-04 10:33:05

标签: .net c#-4.0 func

我有一个函数接收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(); //它没有按预期工作(没有与原始方法相同的结果)

这是正确的转换方式吗,错误发生在其他地方,或者我没有按照自己的意愿进行转换?

1 个答案:

答案 0 :(得分:1)

快速拍摄,我说你在这里犯了错误:

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

因为它引用方法partial而不是结果。 我想你的意思是什么:

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

BTW:如果MvcHtmlString派生自String,那么您的代码就可以工作,因为结果类型是协变的。但不幸的是,事实并非如此,只是我的2美分作为旁注。