2012-01-03 10 views
6

Sto cercando di capire perché questo attributo è stato aggiunto a una classe. Google cerca solo materiale correlato alla COM quando lo cerco; ma l'applicazione non fa nulla tramite COM.Is System.Runtime.InteropServices.GuidAttribute utilizzato per qualsiasi cosa eccetto COM interop

Il commento di controllo non fornisce alcun chiarimento (si riferiva all'altro, modifiche apparentemente non correlate fatte allo stesso tempo); né ha letto il mio traffico email per diversi giorni su entrambi i lati del cambiamento.

+0

Sono solo metadati. Il CLR lo userà per COM Interop; ma potresti usarlo per i tuoi scopi come qualsiasi altro attributo (anche se ti consiglio di creare il tuo attributo personale). – vcsjones

risposta

5

Un tipo in .NET ha sempre un Guid se si utilizza l'attributo o meno. Disponibile tramite la proprietà Type.GUID. Il CLR genera automaticamente uno dalla definizione del tipo, assicurando che i tipi identici abbiano Guidi identici indipendentemente da quale macchina viene generata. Si noti che questo comportamento è molto diverso dal solito modo in cui viene generato un Guid.

Si utilizza solo l'attributo [Guid] se si desidera ignorare il guid generato automaticamente. Che è utile solo negli scenari di interoperabilità COM per ottenere una dichiarazione per abbinare un'interfaccia COM esistente o una coclasse. Dovrebbe essere sempre vicino a un attributo [ComVisible] o [ComImport].

1

L'attributo Guid è stato introdotto per l'interoperabilità COM, ma non c'è nulla che impedisca a te (oa qualsiasi altra terza parte) di riproporlo per altri usi.

Gli attributi, in genere, forniscono informazioni aggiuntive ("metadati") che possono essere utilizzate da altro codice, tuttavia si adatta.

+0

Vero; ma se stavo abusando di qualcosa al di fuori della sua destinazione d'uso, avrei quasi certamente lasciato un paragrafo di testo che spiegava perché lo stavo facendo in una delle fonti o nel commentare i commenti. Il mio sospetto è che sia un po 'di codice spazzatura non eliminato da una falsa partenza. Volevo assicurarmi che non esistesse nessun altro uso legittimo per l'attributo che dovevo escludere per primo. –

Problemi correlati