Visual studio 2010 Visual Studio WCF客户端创建了缺少属性的类,但添加了ExtensionData属性
我有一个WCFService,它以这种方式返回各种类型的数据:Visual studio 2010 Visual Studio WCF客户端创建了缺少属性的类,但添加了ExtensionData属性,visual-studio-2010,wcf,wcf-proxy,Visual Studio 2010,Wcf,Wcf Proxy,我有一个WCFService,它以这种方式返回各种类型的数据: [DataContract( Name="Amazing", NameSpace="http://schemas.myorganisation.com/DataContract1")] Public class AmazingDto { [DataMember( Order=0, IsRequired=true )] public string Name { get; set; } [DataMember(
[DataContract( Name="Amazing", NameSpace="http://schemas.myorganisation.com/DataContract1")]
Public class AmazingDto
{
[DataMember( Order=0, IsRequired=true )]
public string Name { get; set; }
[DataMember( Order=0, IsRequired=true )]
public bool IsAmazing { get; set; }
}
然后
[DataContract ( Name="GetAmazingListResponse", NameSpace="http://schemas.myorganisation.com/DataContract1")]
Public class GetAmazingListResponseDto
{
[DataMember(Order=0, IsRequired-true, EmitDefaultValue=False)]
public ICollection<AmazingDto> AmazingList{ get; set; }
}
我发现response
只有两个属性,Status
和ExtensionData
。我已经在其他SE问题中看到了这一点,但答案总是数据契约中缺少数据契约或数据成员。我肯定有这些,所以一定发生了其他事情,VS.Net无法看到我的课程。我曾尝试引用包含这些文件的DTO库,并尝试将引用配置为与该库的类型相匹配,但没有任何区别
哪里出了问题?我找到的解决方案是,在我使用自己的WCF服务时,将接口导入到我的客户端,然后使用来设置连接。这在我的场景中非常有效,但不能解决我提出的这个问题。只需将[DataMember]添加到您的数据成员中即可。它解决了我的问题。您是否在任何地方指定OperationContract?是的,OperationContract位于服务类实现的接口上。
[DataContract(Name = "Response", Namespace = "http://schemas.myorganisation.com/DataContract1")]
public class ResponseDto<TData> : BaseResponseDto
{
public ResponseDto();
[DataMember(Order = 0, IsRequired = true)]
public StatusDto Status { get; set; }
[DataMember(Order = 1, IsRequired = false, EmitDefaultValue = false)]
public TData Data { get; set; }
}
public ResponseDto<GetAmazingListResponseDto> GetAmazingList()
{
var response = new ResponseDto<GetAmazingListDto>
{
Status = new StatusDto { StatusResult = StatusResultEnum.Success },
Data = new GetAmazingListResponseDto
{
AmazingList = new List<AmazingDto>
{
new AmazingDto { Name="Ponies", IsAmazing=true },
new AmazingDto { Name="Glenatron", IsAmazing=false }
}
}
};
return response;
}
<GetAmazingListResult xmlns:a="http://schemas.myorganisation.com/DataContract1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Status>
<a:StatusResult>Success</a:StatusResult>
</a:Status>
<a:Data xmlns:b="http://schemas.myorganisation.com/DataContract1">
<b:AmazingList>
<b:Amazing>
<b:Name>Ponies</b:Name>
<b:IsAmazing>true</b:IsAmazing>
</b:Amazing>
<b:Amazing>
<b:Name>Glenatron</b:Name>
<b:IsAmazing>false</b:IsAmazing>
</b:Amazing>
</b:AmazingList>
</a:Data>
</GetAmazingListResult>
var client= new FindoutAmazingnessServiceClient();
var response = client.GetAmazingList();