2012-01-03 20 views
6

dışında hiçbir şey için kullanılan System.Runtime.InteropServices.GuidAttribute, bu özniteliğin neden bir sınıfa eklendiğini anlamaya çalışıyorum. Google, arama yaptığımda yalnızca COM ile alakalı materyalleri açıyor; ama uygulama COM üzerinden hiçbir şey yapmaz.COM interop

Checkin yorumu herhangi bir aydınlanma sağlamıyor (aynı anda yapılmış olan, görünüşte ilgili olmayan değişikliklere atıfta bulundu); Ne de olsa e-posta trafiğimi değişikliğin her iki tarafında da okuyordum.

+0

Sadece meta veriler. CLR, COM Interop için kullanacaktır; ama kendi amaçlarınız için başka herhangi bir özellik gibi kullanabilirsiniz (bunun yerine kendi özniteliğinizi oluşturmanızı öneriyorum). – vcsjones

cevap

5

.NET'te bir tür her zaman, özniteliği kullanıp kullanmadığınız konusunda bir Kılavuz'a sahiptir. Type.GUID özelliği aracılığıyla kullanılabilir. CLR otomatik olarak tür tanımından birini oluşturur ve aynı tiplerin, hangi makinede üretildiğine bakılmaksızın özdeş Kılavuzlara sahip olmasını sağlar. Bu, bir Guid oluşturulduğu şekilde çok farklı bir davranış olduğunu unutmayın.

Otomatik oluşturulan kılavuzun geçersiz kılmak istiyorsanız, yalnızca [Guid] özelliğini kullanırsınız. Var olan bir COM arabirimine veya kod sınıfına uyan bir bildirim almak için yalnızca COM birlikte çalışma senaryolarında yararlıdır. Her zaman bir [ComVisible] veya [ComIocort] özniteliğine yakın olmalıdır.

1

COM interop için Guid özniteliği kullanıma sunuldu - ancak başka kullanımlar için onu yeniden kullanmanızı engelleyen hiçbir şey (veya başka bir üçüncü taraf) yoktur.

Öznitelikler, genellikle, diğer kodlar tarafından kullanılabilecek ek bilgiler ("meta veriler") sağlar.

+0

Doğru; ama bunun dışında bir kullanım amacını kötüye kullanıyor olsaydım, neredeyse her iki kaynaktan neden yaptığımı ya da yorumları kontrol ettiğimi açıklayan bir metin parası bırakmış olurdum. Şüphelerim, sahte bir başlangıçtan geri alınmamış bir kaç hunk kodu. İlk önce dışlamak için gerekli olan özellik için herhangi bir meşru kullanım olmadığından emin olmak istedim. –

İlgili konular