C# 从PowerShell向SOAP web服务传递继承的复杂类型

C# 从PowerShell向SOAP web服务传递继承的复杂类型,c#,powershell,soap,C#,Powershell,Soap,我试图调用一个旧的SOAP web服务,它接受一个复杂的继承类型作为参数之一: <s:complexType name="CreditCard"> <s:complexContent mixed="false"> <s:extension base="tns:PaymentCardBase"> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Cvv2" t

我试图调用一个旧的SOAP web服务,它接受一个复杂的继承类型作为参数之一:

<s:complexType name="CreditCard">
 <s:complexContent mixed="false">
  <s:extension base="tns:PaymentCardBase">
   <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="Cvv2" type="s:string"/>
   </s:sequence>
  </s:extension>
 </s:complexContent>
</s:complexType>

<s:complexType name="PaymentCardBase" abstract="true">
 <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="CardHolderName" type="s:string"/>
  <s:element minOccurs="0" maxOccurs="1" name="CardNumber" type="s:string"/>
  <s:element minOccurs="0" maxOccurs="1" name="ExpiryDate" type="s:string"/>
 </s:sequence>
</s:complexType>
错误是:

Cannot convert argument "1", with value: "CATO.CreditCard", for "DoStuff" to type "CATO.PaymentCardBase": 
"Cannot convert the "CATO.CreditCard" value of type "CATO.CreditCard" to type "CATO.PaymentCardBase"."

+ $result = $cato.DoStuff<<<< ("10024007", $card)
+ CategoryInfo          : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
无法将“DoStuff”的值为“CATO.CreditCard”的参数“1”转换为类型“CATO.PaymentCardBase”:
无法将“CATO.CreditCard”类型的“CATO.CreditCard”值转换为“CATO.PaymentCardBase”类型

+$result=$cato.dostuff您是否尝试过将-as放在末尾?例如,
$card=(新对象($type+“.CreditCard”)-作为[YourNamespace.PaymentCardBase]
?通常,只要该类型是继承层次结构的一部分,就没有问题,但您也在调用来自PowerShell的请求。您是否尝试过将-as放在它的末尾?例如,
$card=(新对象($type+“.CreditCard”))-作为[YourNamespace.PaymentCardBase]
?通常,只要类型是继承层次结构的一部分,就没有问题,但您也在调用来自PowerShell的请求。
 $card = New-Object($type + ".CreditCard")
 $result = $cato.DoStuff("10024007", $card)
Cannot convert argument "1", with value: "CATO.CreditCard", for "DoStuff" to type "CATO.PaymentCardBase": 
"Cannot convert the "CATO.CreditCard" value of type "CATO.CreditCard" to type "CATO.PaymentCardBase"."

+ $result = $cato.DoStuff<<<< ("10024007", $card)
+ CategoryInfo          : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument