将Func 铸造到Func

问题描述 投票:17回答:2

我试图弄清楚如何将Func<T>传递给Func<object>方法参数:

public void Foo<T>(Func<T> p) where T: class
{
    Foo(p);
}

public void Foo(Func<object> p)
{

}

奇怪的是,它在NET 4.0类库中可用,但在Silverlight 4类库中不可用。实际上,我希望它在Silverlight中工作,并且我有输入参数,例如Func<T, bool>

c# silverlight generics delegates
2个回答
26
投票

这将解决问题:

public void Foo<T>(Func<T> p) where T : class
{
    Func<object> f = () => p();
    Foo(f);
}

11
投票

在面向.NET 4.0的C#4.0中(即,使用variance

© www.soinside.com 2019 - 2024. All rights reserved.