[英]c# casting child class SOAP
我有一個帶有方法“ GetCustomer”的肥皂接口,該方法返回一個customerDto。 我想為具有更多信息的另一個客戶端創建一個新的接口方法,因此我創建了第二個方法“ GetCustomerExtended”,該方法返回一個以客戶對象為父對象的customerExtendedDto。 為了重用我的代碼,我將孩子強制轉換為父母,但似乎不起作用。 肥皂不返回任何信息。 這是我的代碼:
肥皂類:
public class ShopService : IShopService
{
public CustomerDto GetCustomer(int id)
{
return GetCustomerExtended(id);
}
public CustomerExtendedDto GetCustomerExtended(int id)
{
// Fill result
CustomerExtendedDto result = new CustomerExtendedDto();
result.Id = 1;
result.Name = "foo";
result.Surname = "bar";
return result;
}
}
[ServiceContract]
public interface IShopService
{
[OperationContract]
[FaultContract(typeof(InvalidParameterFaultMessage))]
[FaultContract(typeof(DataNotFoundFaultMessage))]
[FaultContract(typeof(InvalidOperationFaultMessage))]
[FaultContract(typeof(ApplicationLogicFaultMessage))]
[FaultContract(typeof(NotAvailableFaultMessage))]
[FaultContract(typeof(TimeoutFaultMessage))]
CustomerDto GetCustomer(int id);
[OperationContract]
[FaultContract(typeof(InvalidParameterFaultMessage))]
[FaultContract(typeof(DataNotFoundFaultMessage))]
[FaultContract(typeof(InvalidOperationFaultMessage))]
[FaultContract(typeof(ApplicationLogicFaultMessage))]
[FaultContract(typeof(NotAvailableFaultMessage))]
[FaultContract(typeof(TimeoutFaultMessage))]
CustomerExtendedDto GetCustomerExtended(int id);
}
Dto:
[DataContract]
public class CustomerDto
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class CustomerExtendedDto : CustomerDto
{
[DataMember]
public strint Surname{ get; set; }
}
該方法似乎可行,並且不會花費任何費用,但答案始終是空的。 GetCustomerExtended可以正常工作,GetCustomer為空。 SOAP UI似乎沒有任何信息。 如果我像這樣在“ GetCustomer”中填寫客戶信息,則它可以正常工作:
public CustomerDto GetCustomer(int id)
{
// Fill result
CustomerDto result = new CustomerDto();
result.Id = 1;
result.Name = "foo";
return result;
}
這是什么問題 我如何才能正確地投射到這里?
SoapUI日志說:Thu Oct 11 11:29:42 CEST 2018:ERROR:請求中的異常:java.net.SocketException:連接重置Thu Oct 11 11:29:42 CEST 2018:ERROR:發生錯誤[連接重置] ,請參閱錯誤日志以獲取詳細信息。Thu Oct 11 11:29:42 CEST 2018:INFO:獲取[BasicHttpBinding_IShopService.GetCustomer:Request 1]響應時出錯; java.net.SocketException:連接重置
我找到了一個解決方案,雖然不是很好,但可以:
public CustomerDto GetCustomer(int id)
{
CustomerDto customer = Mapper.Map<CustomerExtendedDto, CustomerDto>(GetCustomerExtended(id));
return customer;
}
我認為問題在於,該對象仍然是“ CustomerExtended”對象。 這是通過引用調用的,我將customerextended xml返回到soap UI(或者可能是混合的)。 使用自動映射器,我創建了一個CustomerDto,並且運行良好。
但是我仍然很高興為這個問題提供更好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.