System.ServiceModel.Description.WsdlContractConversionContext类的实例化

时间:2012-09-17 12:16:11

标签: wcf c#-4.0 wsdl

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

有没有解决这个问题的工作?

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

注意: 要求的确是,我正在执行IWsdlExportExtension.ExportContractIWsdlImportExtension.ImportContract的实现,并且要对此实现进行单元测试,我需要WsdlContractConversionContext的实例。

1 个答案:

答案 0 :(得分:1)

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

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

在问题中进行编辑后更新:众所周知,WCF的许多部分很难进行单元测试。如果您不能使用WCF本身来创建实例,则唯一的替代方法是使用反射。要创建转换上下文类的实例,您需要ContractDescription的实例(您可以为合同创建但不容易),以及PortType,这更难实现。我担心单元测试你的WSDL导出/导入扩展的实现可能不值得努力。