<分区>
Possible Duplicate:
'Delegate 'System.Action' does not take 0 arguments.' Is this a C# compiler bug (lambdas + two projects)?
当我在做一个大量使用 lambda 的测试框架时,我偶然发现了一个解析器错误。
public class CSpecTestRunnerSpec : CSpecFacade<CSpecTestRunner>
{
public CSpecTestRunnerSpec()
: base(new CSpecTestRunner())
{
CreateOperations();
}
private MyClassSpec myClassSpec;
private DescribeAll run_on_type;
protected override void BeforeOperation()
{
myClassSpec = new MyClassSpec();
}
private void CreateOperations()
{
run_on_type =
(@it, @do) =>
{
@it("Runs all of the operations contained in a type");
@do.RunTestOnType(myClassSpec.GetType());
};
}
DescribeAll 委托(delegate)来自基类,它的接口(interface)如下所示:
编辑代码如下:
public delegate void DescribeAll(Action<string> description, TClass objSpec);
我遇到的异常是“委托(delegate)操作不接受 1 个参数”,但它确实接受了!在我的类代码中添加了一个虚拟委托(delegate)之后:
private Action<string> dummy;
它开始工作了。 :-)
相比之下,相同的代码在没有虚拟委托(delegate)的情况下在单声道中运行没有错误,它在具有 NET 3.5 和 4.0 的多台机器上进行了测试。
所以我的问题是,这是编译器方面的错误还是我方面的错误?如何解决这个问题?
p.s 框架在 codeplex 上这样您就可以获得完整的代码并自己进行测试。