2012-01-03 34 views
6

Tôi đang cố gắng tìm ra lý do tại sao thuộc tính này được thêm vào một lớp. Google chỉ chuyển tài liệu có liên quan đến COM khi tôi tìm kiếm; nhưng ứng dụng không làm bất cứ điều gì thông qua COM.Là System.Runtime.InteropServices.GuidAttribute được sử dụng cho bất cứ điều gì ngoại trừ COM interop

Nhận xét đăng ký không cung cấp bất kỳ sự khai sáng nào (nó được đề cập đến các thay đổi khác, dường như không liên quan được thực hiện cùng một lúc); cũng không đọc lưu lượng email của tôi trong vài ngày ở hai bên của thay đổi.

+0

Đó chỉ là siêu dữ liệu. CLR sẽ sử dụng nó cho COM Interop; nhưng bạn có thể sử dụng nó cho mục đích của riêng bạn như bất kỳ thuộc tính nào khác (mặc dù tôi khuyên bạn nên tạo thuộc tính của riêng bạn thay thế). – vcsjones

Trả lời

5

Loại .NET luôn có Hướng dẫn cho dù bạn có sử dụng thuộc tính hay không. Có sẵn thông qua thuộc tính Type.GUID. CLR tự động tạo một từ định nghĩa kiểu, đảm bảo rằng các kiểu giống hệt nhau có các Guids giống nhau bất kể nó được tạo ra từ máy nào. Lưu ý rằng đây là hành vi rất khác với cách thông thường mà Guid được tạo ra.

Bạn chỉ sử dụng thuộc tính [Guid] nếu bạn muốn ghi đè lên hướng dẫn được tạo tự động. Điều này chỉ hữu ích trong các tình huống COM interop để có được một tuyên bố để phù hợp với một giao diện COM hiện có hoặc coclass. Nó phải luôn ở gần thuộc tính [ComVisible] hoặc [ComImport].

1

Thuộc tính Guid được giới thiệu cho COM interop - nhưng không có gì ngăn cản bạn (hoặc bất kỳ bên thứ ba nào khác) sử dụng lại nó cho các mục đích sử dụng khác.

Thuộc tính, nói chung, cung cấp thông tin bổ sung ("siêu dữ liệu") có thể được sử dụng bởi mã khác tuy nhiên, phù hợp.

+0

Đúng; nhưng nếu tôi đã lạm dụng một cái gì đó bên ngoài nó dự định sử dụng tôi gần như chắc chắn đã để lại một đoạn văn bản giải thích lý do tại sao tôi đã làm nó trong một trong hai nguồn hoặc ý kiến ​​checkin. Nghi ngờ của tôi là nó có một chút mã rác chưa được xóa từ một khởi đầu sai lầm. Tôi muốn đảm bảo không có bất kỳ việc sử dụng hợp pháp nào khác cho thuộc tính mà tôi cần loại trừ trước tiên. –

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