Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 63994|Yanıt: 1

[Kaynak] C#, IsAssignableFrom, IsSubclassOf belirlenmesini devralır

[Bağlantıyı kopyala]
Yayınlandı 18.11.2019 11:45:09 | | |
Bazen, bir sınıfın bir arayüzü uygulayıp uygulamadığını belirlememiz gerekir; örneğin belirli bir tür bulmak için yansıma mekanizması kullanıldığında.

Basitçe söylemek gerekirse, Type.IsAssignableFrom yöntemini kullanabilirsiniz:

IsAssignableFrom, BarClass tipinin IFoo arayüzüne atanamayacağını gösterir, bu yüzden doğru dönüşü için koşul, BarClass'ın doğrudan veya dolaylı olarak IFoo arayüzünü uygulamasıdır. Tip tipinde ayrıca IsSubclassOf adlı bir yöntem vardır ve bu da şudurSadeceSınıfların miras ilişkilerini değerlendirmek için kullanılır, örneğin

FooClass'ın BarClass'tan miras alındığını gösterir.

Elbette, IsAssignableFrom kalıtı belirlemek için de kullanılabilir.

Yani, aşağıdaki kod için:

arayüz I { /* ... */ }
sınıf A : I { /* ... */ }
sınıf B : A { /* ... */ }
IsSubclassOf ve IsAssignableFrom için dönüş değerleri şunlardır:

typeof(A).isAssignableFrom(typeof(I)); yanlış
typeof(A).isSubClassOf(typeof(I)); yanlış
  
typeof(I).isAssignableFrom(typeof(A)); doğru
typeof(I).isAssignableFrom(typeof(B)); doğru
typeof(B).isSubClassOf(typeof(I)); yanlış
  
typeof(A).isAssignableFrom(typeof(A)); doğru
typeof(A).isSubClassof(typeof(A)); yanlış
  
typeof(A).isAssignableFrom(typeof(B)); doğru
typeof(A).isSubClassof(typeof(B)); yanlış
  
typeof(B).isAssignableFrom(typeof(A)); yanlış
typeof(B).isSubClassof(typeof(A)); doğru






Önceki:.NET Çekirdek Zaman Damgası Dönüşümü (10-bit)
Önümüzdeki:EF Core pit: DbContextPool veritabanı bağlantı havuzu bağlantısının tükenmesine neden oluyor
 Ev sahibi| Yayınlandı 19.03.2021 13:39:47 |
Genel bir temel sınıfı miras alan bir nesne elde eder

Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com