我的wcf中有以下课程:
[DataContract]
public class CibilEnquiry
{
public PN Pn { get; set; }
[DataMember]
public List<ID> Id { get; set; }
}
[DataContract]
public class ID
{
[DataMember]
public string SegmentTag { get; set; }
[DataMember]
public string IDType { get; set; }
[DataMember]
public string IDNumber { get; set; }
}
[DataContract]
public class PN
{
[DataMember]
public string SegmentTag { get; set; }
[DataMember]
public string ConsumerNameField1 { get; set; }
}
我正在尝试在ym应用程序中创建对象:
CibilWcfService.CibilEnquiry CibilEnquiryEnq = new CibilWcfService.CibilEnquiry();//no problem
CibilEnquiryEnq.Pn = new CibilWcfService.PN();//no problem
CibilEnquiryEnq.Id = new CibilWcfService.ID() ;//Cannot implicitly convert type 'CbilFileReader.CibilWcfService.ID' to 'CbilFileReader.CibilWcfService.ID[]'
正如我在评论中提到的,我无法创建属于List类型的CibilEnquiry属性的对象。
此外,似乎当我在wcf中使用构造函数初始化属性时,它没有用。 (已经在这里问了一个:Unable to initialize member through Constructor in WCF)。
答案 0 :(得分:1)
错误消息是自我描述的,您无法在此行向ID
数组分配ID[]
的实例:
CibilEnquiryEnq.Id = new CibilWcfService.ID()
请注意您已以Id
方式声明public List<ID> Id { get; set; }
,当您添加服务引用时,服务引用实用程序会将其转换为public ID[] Id { get; set; }
类型中的CibilWcfService.CibilEnquiry
。
要将数组实例分配给Id
,您可以使用:
CibilEnquiryEnq.Id = new CibilWcfService.ID[]{};
要使用某些值初始化数组,可以使用所需的大小创建数组,然后在for
循环中创建ID
的实例并初始化它并将其分配给{{1最后使用array[i]
此外,您可以使用CibilEnquiryEnq.Id= array
并使用List<ID>
为其创建并添加一些ID
,然后将列表转换为数组,并按以下方式指定:list.Add()
< / p>
答案 1 :(得分:1)
这实际上取决于CibilWcfService.ID()
返回的内容。如果它返回ID
,那么为什么要将您的属性声明为public List<ID> Id { get; set; }
?也许如果你只是改变这种贬低会更好吗?
如果您确实需要将单个记录分配到列表,那么您可以这样做:
CibilEnquiryEnq.Id = new List<ID> { CibilWcfService.ID() };