0

对于项目需求,我需要实例化WsdlContractConversionContext没有构造函数的实例。

有什么办法可以实现这一目标吗?

WsdlContractConversionContextSystem.ServiceModel.Description命名空间的成员。

注意: 确切的要求是,我正在执行IWsdlExportExtension.ExportContractand IWsdlImportExtension.ImportContract,并且要对这个实现进行单元测试,我需要WsdlContractConversionContext.

4

1 回答 1

1

基本上有两种方法可以做到这一点:您可以使用反射来调用类的非公共构造函数(确保向它传递适当的参数);或者您可以让 WCF 为您创建它,并在您需要的任何地方使用它。被WsdlContractConversionContext作为参数之一传递给IWsdlExportExtension.ExportContractor 或 an IWsdlImportExtension.ImportContract,因此您需要实现两个接口之一(导出通常更容易,因为您不需要使用 WSDL 消费工具),并强制接口被调用(您可能需要为此点击服务元数据端点)。

http://blogs.msdn.com/b/carlosfigueira/archive/2011/10/06/wcf-extensibility-wsdl-export-extension.aspx上的帖子有一个实现 WSDL 导出扩展的示例。

更新问题中的以下编辑:WCF 的许多部分都很难进行单元测试。如果您不能使用 WCF 本身来创建实例,那么您唯一的选择就是使用反射。要创建转换上下文类的实例,您需要一个ContractDescription实例(您可以为您的合约创建它,但并不容易)和一个PortType,这更难。恐怕对 WSDL 导出/导入扩展的实现进行单元测试可能不值得。

于 2012-09-18T04:51:10.717 回答