Bar*_*ski 2 c# compiler-errors
可能重复:
'Delegate'System.Action'不带0个参数.' 这是一个C#编译器错误(lambdas +两个项目)吗?
当我在做一个使用大量lambda用法的测试框架时,我偶然发现了一个解析器bug.
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());
};
}
Run Code Online (Sandbox Code Playgroud)
DescribeAll委托来自基类,它的界面如下所示:
编辑代码看起来像这样:
public delegate void DescribeAll(Action<string> description, TClass objSpec);
Run Code Online (Sandbox Code Playgroud)
我得到的例外是"委托行动不带1个参数"但它完全有效!并在我的类的代码中添加一个虚拟委托后:
private Action<string> dummy;
Run Code Online (Sandbox Code Playgroud)
它开始起作用了.:-)
相比之下,相同的代码在单声道中没有错误的情况下工作,没有虚拟委托,它在使用NET 3.5和4.0的多台机器上进行了测试.
所以我的问题是,这是编译器方面还是我方的错误?以及如何解决问题?
ps框架在codeplex上,因此您可以获得完整的代码并自行测试.
该错误已在C#5中修复.再次为此带来不便,并感谢报告.
这是编译器中的已知错误,但它不在解析器中; 它位于语义分析器和元数据导入缓存之间的交互中.我对bug的分析如下:
'委托'System.Action'不带0个参数.' 这是一个C#编译器错误(lambdas +两个项目)吗?
这是我的错; 我带来的不便表示歉意.我们将尝试为下一个版本修复它.
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |