Tür eşdeğerliği ve katıştırılmış birlikte çalışma türleri
.NET Framework 4'ten başlayarak, ortak dil çalışma zamanı, com türleri için tür bilgilerini doğrudan yönetilen derlemelere eklemeyi destekler; bunun yerine, yönetilen derlemelerin birlikte çalışma derlemelerinden COM türleri için tür bilgilerini almasını gerektirir. Katıştırılmış tür bilgileri yalnızca yönetilen derleme tarafından gerçekten kullanılan türleri ve üyeleri içerdiğinden, iki yönetilen derleme aynı COM türünde çok farklı görünümlere sahip olabilir. Her yönetilen derlemenin, COM türü görünümünü temsil eden farklı Type bir nesnesi vardır. Ortak dil çalışma zamanı arabirimler, yapılar, numaralandırmalar ve temsilciler için bu farklı görünümler arasında tür eşdeğerliğini destekler.
Tür eşdeğerliği, bir yönetilen derlemeden diğerine geçirilen bir COM nesnesinin, alıcı derlemede uygun yönetilen türe geçirilebileceği anlamına gelir.
Not
Tür eşdeğerliği ve katıştırılmış birlikte çalışma türleri, birlikte çalışma derlemelerinin uygulamalarla dağıtılması gerekmediğinden COM bileşenlerini kullanan uygulamaların ve eklentilerin dağıtımını basitleştirir. Paylaşılan COM bileşenlerinin geliştiricileri, bileşenlerinin .NET Framework'ün önceki sürümleri tarafından kullanılmasını istiyorsa birincil birlikte çalışma derlemeleri (PIA) oluşturmaları gerekir.
Tür eşdeğerliği
COM türlerinin eşdeğerliği arabirimler, yapılar, numaralandırmalar ve temsilciler için desteklenir. Aşağıdakilerin tümü doğruysa COM türleri eşdeğer olarak nitelenir:
Türler her iki arabirim, her iki yapı ya da her iki numaralandırma ya da her iki temsilcidir.
Türler, sonraki bölümde açıklandığı gibi aynı kimliğe sahiptir.
Her iki tür de, COM türlerini tür eşdeğerliği için işaretleme bölümünde açıklandığı gibi tür eşdeğerliği için uygundur.
Tür kimliği
Kapsamları ve kimlikleri eşleştiğinde, diğer bir deyişle, her biri özniteliğine sahipse ve iki öznitelik de eşleşen Scope ve Identifier özelliklere sahipse, iki türün TypeIdentifierAttribute aynı kimliğe sahip olduğu belirlenir. için Scope karşılaştırma büyük/küçük harfe duyarlı değildir.
Bir türün TypeIdentifierAttribute özniteliği yoksa veya kapsam ve tanımlayıcı belirtmeyen bir TypeIdentifierAttribute özniteliği varsa, tür yine de eşdeğerlik için aşağıdaki gibi göz önünde bulundurulabilir:
Arabirimler için özelliği yerine TypeIdentifierAttribute.Scope değerini GuidAttribute ve Type.FullName özelliği (ad alanı da dahil olmak üzere tür adı) özelliği yerine TypeIdentifierAttribute.Identifier kullanılır.
Yapılar, numaralandırmalar ve temsilciler için özelliği GuidAttribute yerine Scope içeren derlemenin ve özelliği Type.FullName yerine Identifier özelliği kullanılır.
TÜR eşdeğerliği için COM türlerini işaretleme
Bir türü tür eşdeğerliği için uygun olarak iki şekilde işaretleyebilirsiniz:
özniteliğini TypeIdentifierAttribute türüne uygulayın.
Türü COM içeri aktarma türü yapın. Arabirim, özniteliğine sahipse ComImportAttribute com içeri aktarma türüdür. Arabirim, yapı, numaralandırma veya temsilci, tanımlandığı derleme özniteliğine sahipse ImportedFromTypeLibAttribute com içeri aktarma türüdür.