2011-07-13 31 views
40

Tôi nhận được lỗi này sau khi tôi tạo một lớp từ tệp xsd của tôi bằng cách sử dụng công cụ xsd.exe. Vì vậy, tôi tìm kiếm trên mạng và tìm thấy một giải pháp. Đây là liên kết: http://satov.blogspot.com/2006/12/xsdexe-generated-classes-causing.htmlKhông thể tạo một lớp tạm thời (kết quả = 1). lỗi CS0030: Không thể chuyển đổi loại 'Loại []' thành 'Loại'?

Vấn đề là điều này làm cho mã chạy, nhưng bằng cách nào đó dữ liệu deserialized dường như bị hỏng. Tôi đã làm những gì trang web gợi ý và cuối cùng thứ nguyên mảng thứ hai luôn trống (xem nhận xét của trang web, ai đó cũng gặp vấn đề này). Câu hỏi là, làm thế nào để tôi giải quyết vấn đề này ngay bây giờ? Có công cụ nào khác để tạo tệp xsd không? Tôi đã thử Xsd2Code, không thành công.

Cảm ơn :-)

+0

Bạn có thấy cuộc thảo luận ở đây: http://social.msdn.microsoft.com/forums/en-US/asmxandxml/thread/e33305c3-b5f6-4922-8a3f-df202088d25a/ có vẻ như bạn có thể thêm giả thuộc tính cho xsd của bạn. Không chắc chắn nếu đây là vấn đề bạn đang phải đối mặt. –

+0

Tôi gặp vấn đề về mô phỏng, nhưng việc thêm thuộc tính giả không khắc phục được, hãy xem câu hỏi của tôi tại đây: http://stackoverflow.com/q/10514817/198048 –

Trả lời

88

Bạn cần thay đổi loại biến thành viên trong lớp được tuần tự hóa. Ví dụ: nếu việc tăng lỗi như:

Không thể tạo lớp tạm thời (kết quả = 1). lỗi CS0030: Không thể chuyển đổi loại 'Dữ liệu []' thành 'Dữ liệu'.

Tôi chạy một tìm kiếm trên tên kiểu dữ liệu trong file được tạo ra, và tôi thấy điều này:

[System.Xml.Serialization.XmlArrayItemAttribute("Data", typeof(Data), IsNullable=false)] 
public Data[][] Row 

Thay Data[][] với Data[] - Thay đổi loại dữ liệu từ một mảng 2D sang một Mảng 1D. Nó sẽ giải quyết vấn đề của bạn. :)

+1

cảm ơn, nó đã giải quyết được vấn đề của tôi :) – techExplorer

+4

Cảm ơn vì điều này dấu. Nhưng tại sao Microsoft XSD Tool lại tạo ra các mảng 2D? – float

+6

Tôi đã gặp vấn đề tương tự khi sử dụng XSD của Microsoft để tạo một lớp cho XML được trả về bởi API môi giới chứng khoán của TD Ameritrade .. Tôi tự hỏi liệu có công cụ nào tốt hơn XSD.EXE tự động tạo mà không cần phải dọn dẹp thủ công C# lớp học? Tôi nhận được quá nhiều lỗi trong một XML và tôi có nhiều thứ khác để xử lý ...! –

9

Có cùng vấn đề, nhưng Xsd2Code không tích hợp với VS2012. Vì vậy, thay vào đó tôi đi đến xsd.exe tạo file .cs của tôi và đã làm:

Tìm [] [] Thay thế []

mà làm việc.

0

Đối với trường hợp của tôi, trường hợp sự cố do khai báo không hợp lệ cho thuộc tính thuộc tính XmlArrayItem.

Từ

[XmlArrayItem("MyArray", typeof(string))] 
public List<ClassName> Items{ get; set; } 

tôi đã thay đổi với loại thích hợp: từ chuỗi ClassName

[XmlArrayItem("MyArray", typeof(ClassName))] 
public List<ClassName> Items{ get; set; } 

Hope this helps!

0

Nếu nó trong VB.net sau đó bạn có để tìm kiếm()() trong Reference.vb của bạn và thay thế bằng()

1

Thêm <xs:attribute name="tmp" type="xs:string" /> sau mỗi
<xs:sequence maxOccurs="unbounded"> <xs:element ../> </xs:sequence>

<xs:sequence> <xs:element maxOccurs="unbounded"/> </xs:sequence>
phần tử trong tệp lược đồ nếu bạn không muốn mất kích thước của mảng.

+0

Bạn có thể cho ví dụ về điều này không? – Najera

3

tôi nhận này error.In giải pháp của bạn có tập tin Reference.cs trong tập tin mà bạn cần phải tìm kiếm "[] []" và sau đó sẽ có hai kết quả trong nó ..

Sau khi bạn cần xóa một "[]" khỏi "[] []" khỏi cả hai vị trí ..

Nó làm việc cho tôi ..

Cảm ơn ..

+0

Trong tất cả các câu trả lời, đây là một trong những người làm việc cho tôi. Có vẻ Visual Studio, khi bạn thêm một tài liệu tham khảo dịch vụ, làm cho điều này rất sai lầm. – nivs1978

+0

Có. Lỗi này mất 5 giờ của tôi –

1

Đối với tôi nó giúp để đắp vá các XML được sử dụng để tạo ra các mã. Nó xảy ra khi:

<Names> 
    <Name></Name> 
    <Name></Name> 
</Names> 

thì đây được tối ưu hóa bởi xsd tên mảng double entry

Những gì tôi đã làm là:

<Names> 
    <Dummy></Dummy> 
    <Name></Name> 
    <Name></Name> 
</Names> 

xsd không tối ưu hóa nó nhưng rời khỏi mảng đơn name

Các vấn đề liên quan