对于项目要求的情况,我需要实例化没有构造函数的WsdlContractConversionContext
。
有没有解决这个问题的工作?
WsdlContractConversionContext
是System.ServiceModel.Description
命名空间的成员。
注意:
要求的确是,我正在执行IWsdlExportExtension.ExportContract
和IWsdlImportExtension.ImportContract
的实现,并且要对此实现进行单元测试,我需要WsdlContractConversionContext
的实例。
答案 0 :(得分:1)
基本上有两种方法可以做到这一点:你可以使用反射来调用类的非公共构造函数(确保你将适当的参数传递给它);或者您可以让WCF为您创建它,并在您需要的任何地方使用它。 WsdlContractConversionContext
作为参数之一传递给IWsdlExportExtension.ExportContract
或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导出/导入扩展的实现可能不值得努力。