2015-11-20 82 views
1

我有我的WCF以下類:如何創建類型列表的類屬性的對象<class>

[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

此代碼甚至不會編譯,因爲'CibilEnquiryEnq'沒有財產稱爲'Pa',你有沒有意思是'CibilEnquiryEnq.Id = new CibilWcfService.PA();'? – 3dd

+0

錯誤是相當清楚的:你想創建對象的一個​​實例,並直接分配它是一個數組類型的屬性。您需要創建一個數組,將新的實例粘貼在該數組中,並將該數組分配給該屬性。 –

回答

1

錯誤消息是自描述,你不能的ID實例在該行分配給ID[]數組:

CibilEnquiryEnq.Id = new CibilWcfService.ID() 
已經聲明 Id這樣 public List<ID> Id { get; set; }當您添加服務引用

講究中,服務參考效用在CibilWcfService.CibilEnquiry類型它轉換爲public ID[] Id { get; set; }

在磁盤陣列的一個實例分配給Id您可以使用此:

CibilEnquiryEnq.Id = new CibilWcfService.ID[]{}; 

要使用一些值初始化數組,你可以創建你需要的大小的數組,然後在for循環創建的ID實例並對其進行初始化並將其分配給array[i],最後使用CibilEnquiryEnq.Id= array

您也可以使用List<ID>以及創建和使用list.Add()一些ID添加到它,然後再轉換列表CibilEnquiryEnq.Id= list.ToArray()

+0

爲什麼它把它轉換成數組時,它是一個列表?你的代碼有效,但我希望能夠在循環中動態添加實例。 – Arbaaz

+0

@Arbaaz你也可以在循環中動態添加項目到數組中,這是沒有問題的。 –

+0

@Arbaaz **當它是一個列表時,它爲什麼將它轉換爲數組?**,您可以配置服務引用工具也使用通用列表作爲您的列表,您可以刪除您的服務引用,再次添加服務引用,選擇高級,將集合類型設置爲'System.Collections.Generic.List' –

1

這真的取決於CibilWcfService.ID()返回:數組和這種方式進行分配。如果返回ID那麼爲什麼你宣佈你的財產public List<ID> Id { get; set; }?如果你只是改變這種偏見,也許會更好?

如果你真的需要單個記錄分配給一個列表,那麼你可以這樣做:

CibilEnquiryEnq.Id = new List<ID> { CibilWcfService.ID() }; 
相關問題