2012-11-28 27 views
17

Khi thiết kế ngoại lệ tùy chỉnh cho .NET, MSDN cung cấp these guidelines. Đặc biệt, các hướng dẫn nêu rằng một ngoại lệ tùy chỉnh:Triển khai ngoại lệ tùy chỉnh trong Thư viện lớp di động

  • nên serializable, ví dụ: thực hiện ISerializable và được trang trí với các thuộc tính [Serializable], và
  • nên thực hiện (de) constructor serialization, ví dụ: protected CustomException(SerializationInfo info, StreamingContext context).

Tuy nhiên, trong một Portable Class Library không phải của SerializableAttribute, ISerializableSerializationInfo được hỗ trợ.

Tôi nên thiết kế đầy đủ ngoại lệ tùy chỉnh trong Thư viện lớp di động đồng thời nhắm mục tiêu .NET Framework và một hoặc nhiều nền tảng như thế nào?

Trả lời

17

Về cơ bản, bỏ qua hướng dẫn đó - đó là dành cho .NET đầy đủ và không áp dụng cho các dự án thư viện lớp di động. Thật vậy, nếu chúng ta nhìn vào (nói) Silverlight (trong đó bao gồm WP7) chúng ta thấy:

[ClassInterfaceAttribute(ClassInterfaceType.None)] 
[ComVisibleAttribute(true)] 
public class Exception 

Thẳng thắn mà nói, người tiêu dùng chính của yêu cầu đó là Remoting ... và đó không phải là nhu cầu rất lớn hiện nay.

+0

Rất cám ơn vì đã làm rõ, Marc. Tôi nghi ngờ rằng đây là trường hợp (hướng dẫn đã không được cập nhật cho .NET 4.5 ví dụ), nhưng nó cảm thấy bảo đảm hơn để có được xác nhận từ một nguồn đáng tin cậy. –

+1

@Anders Tôi đã thêm một số ghi chú vào phần "Nội dung Cộng đồng" - chúng có thể xuất hiện tại một số thời điểm. –

+1

Một số điều này được thực thi tại thời điểm chạy. Ví dụ, nếu bạn cố gắng thêm một cái gì đó vào bộ sưu tập Exception.Data nó sẽ ném một ngoại lệ trên toàn bộ khung chứ không phải trên Silverlight. –

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