2010-04-15 27 views

Trả lời

19

Vì đây là ngữ nghĩa trình biên dịch, tôi muốn nói không. Tuy nhiên, bạn mong muốn họ làm việc theo cách duy nhất sau đây.

Về phía mã dịch vụ, tất cả mã sẽ chấp nhận các thông số mặc định.

Ở phía máy khách, tôi lưu ý rằng công cụ 'Thêm dịch vụ tham khảo' trên VS2010 không có giá trị mặc định và thêm chúng vào proxy được tạo. Vì vậy, bạn sẽ phải tạo proxy của riêng bạn.

Bằng cách này, mã khách hàng có thể sử dụng mặc định nếu mặc định được chỉ định trong việc triển khai hợp đồng phía khách hàng.

Tôi sẽ làm như vậy là đúng cho các tham số được đặt tên.

Tất cả đều có, nhưng nội dung không được chuyển qua WCF. Tất cả những gì xảy ra là proxy của khách hàng sẽ phải gửi vào nhà máy kênh làm thông số thích hợp.

+2

Lý do cơ bản cho điều này là cả WSDL lẫn MEX đều không biết gì về các tính năng của ngôn ngữ lập trình C#. Họ không có cách nào để mô tả các thông số tùy chọn. –

30

WSDL không thể mô tả các tham số tùy chọn, vì vậy câu trả lời là "không".

+2

Thật không may là [OperationContract] chỉ im lặng chuyển đổi các tham số tùy chọn thành các tham số bắt buộc: ( – epalm

+1

@epalm: nó không chuyển đổi bất cứ điều gì. Nó chỉ bỏ qua những thứ không liên quan. –

+0

Làm rõ: khi tôi tổ chức một dịch vụ WCF và tạo ra một proxy thông qua Metadata Exchange, các phương thức trong Reference.cs được tạo ra có các tham số cần thiết, mặc dù các phương thức trong dịch vụ chứa các tham số tùy chọn – epalm

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