语言不支持<method>

时间:2015-08-15 19:38:30

标签: c#

我正在编写一个编排(restful web)服务,它将代理对多个依赖服务的调用,并将结果打包成一个综合结果对象。

部分原因是将各种服务的输入和输出映射到其他服务的输入。

例如,OrchestrationService接受输入。它调用DepServiceA来检索结果。然后它获取DepServiceA的输出,将其与OrchestrationService的输入组合以产生DepServiceB的输入。 DepServiceB会返回一个结果,然后将结果与DepServiceA的结果和OrchestrationService的输入相结合,以创建DepServiceCDepServiceD的输入。所有这些映射都是通过一个有凝聚力的映射器类 - Mapper完成的。

现在为了擦。 OrchestrationService中有两个相似但不同的端点,它们接收两个相似但不同的输入,并调用两个相似但不同的DepServiceB调用。 工作流程的其余部分是相同的。唯一的区别是DepServiceB的输入。

因此,我将Mapper的公共部分抽象为MapperBase,一个抽象类,以及两个子类Mapper1Mapper2

基本理念是这个。

public abstract class MapperBase {
    protected ServiceCInput MapToServiceCInput(ServiceBOutput output, [some other fields passed in from subclass state]){
        //map to Service C Input
    }

    protected ServiceDInput MapToServiceDInput(ServiceBOutput output, [some other fields passed in from subclass state]){
        //map to Service D Input
    }

    public abstract ServiceCInput MapToServiceCInput(ServiceBOutput output);
    public abstract ServiceDInput MapToServiceDInput(ServiceBOutput output);
}

public class Mapper1 : MapperBase {
    public ServiceCInput MapToServiceCInput(ServiceBOutput output){
        return MapToServiceCInput(output, [state based params]);
    }
    public ServiceDInput MapToServiceDInput(ServiceBOutput output){
        return MapToServiceDInput(output, [state based params]);
    }

    public ServiceBInput1 MapToServiceBInput(ServiceAOutput serviceAOutput){
        //map to Service B Input 1
    }
}

public class Mapper2 : MapperBase {
    public ServiceCInput MapToServiceCInput(ServiceBOutput output){
        return MapToServiceCInput(output, [state based params]);
    }
    public ServiceDInput MapToServiceDInput(ServiceBOutput output){
        return MapToServiceDInput(output, [state based params]);
    }

    public ServiceBInput2 MapToServiceBInput(ServiceAOutput serviceAOutput){
        //map to Service B Input 2
    }
}

现在,这些映射器在实际端点中使用,没问题。

但是,因为我是一名优秀的开发人员,所以我想确保这些地图制作者符合我的规范,并进行单元测试以涵盖这一点。

Mapper1没有问题。单元测试编译并运行。

Mapper2有一组类似的单元测试。但是,Mapper2的集合会生成以下编译错误:

'MapToServiceBInput' is not supported by the language

单元测试项目中只发生 ,而Mapper2只发生 。我所说的方法并不重要。它总是生成此错误(使用该方法当前具有的任何名称)。两个类中没有其他方法存在问题。就是这个。

我尝试过以下方法:

  • 删除对端点项目的引用并将其读取
  • 清理解决方案(并在整个解决方案中手动删除bin / obj目录)
  • 重命名方法。
  • 删除对基类的继承
  • 重启我的机器
  • 将调用放在单元测试项目中的不同文件中
  • 上述所有组合。

总是得到此编译器错误,但仅适用于Mapper2且仅适用于单元测试项目。

我不知所措。

0 个答案:

没有答案