我有一个带有方法“ 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日志显示: 2018年10月11日星期四11:29:42 CEST 2018:ERROR:请求中的异常:java.net.SocketException:连接重置 2018年10月11日星期四11:29:42 CEST:错误:发生错误[连接重置],有关详细信息,请参见错误日志 周四10月11日11:29:42 CEST 2018:INFO:获取[BasicHttpBinding_IShopService.GetCustomer:Request 1]响应时出错; java.net.SocketException:连接重置
答案 0 :(得分:0)
我找到了一个解决方案,虽然不是很好,但是可以工作:
public CustomerDto GetCustomer(int id)
{
CustomerDto customer = Mapper.Map<CustomerExtendedDto, CustomerDto>(GetCustomerExtended(id));
return customer;
}
我认为问题在于,该对象仍然是“ CustomerExtended”对象。这是通过引用调用的,我将customerextended xml返回到soap UI(或者可能是混合的)。使用自动映射器,我创建了一个CustomerDto,它工作正常。
但是我仍然很高兴为这个问题提供更好的解决方案。