Yansımayı kullanma Yinelenen öğeler listesinde (tip bilinmiyor, nesne olacak) yayınlamam gereken bir nesnem var. İzleme penceresini kullanma Nesnemin bir kaç öğe olduğunu ve öğelerin sayısını görebildiğini görebiliyorum. Öğeleri görmek için ağaç görünümünü patlatabiliyorum. Öncelikle, geçirilen nesnenin bir çeşit dizidir (Liste olabilir, nesne olabilir [], vb.). O zaman bu dizi boyunca yinelemeye ihtiyacım var. Ancak, tür dönüşümü yapamıyorum. Ben (kısaltılır) kullanıyorum nasıl İşteC# nesnenin dizilimi
var: Çeşitli farklı tonlarını denedim
private static void Example(object instance, PropertyInfo propInfo)
{
object anArray = propInfo.GetValue(instance, null);
ArrayList myList = anArray as ArrayList;
foreach (object element in myList)
{
// etc
}
}
. Yukarıdakiler bir istisna oluşturmaz, ancak bir Array aslında var olduğunda ve öğeler içerdiğinde mylist boştur. Kaydedilmekte olan asıl örnek, güçlü bir şekilde yazılan Liste <> 'dır, ancak gerektiğinde sınırlı bir form alt kümesini alabilir. Ancak uygulamanın amacı, bu Örnek() yönteminin, özelliğin temel türünü bilmemesidir.
Eğer instance.GetType (nesne türünü öğrenebilirsiniz) ile, is' 'örneğin kullanarak desirebale türüyle karşılaştırabilirsiniz 'if (instance.GetType(), IEnumerable'dır)' – Tsar
@Bad Görünen Ad, * is * anahtar sözcüğünün nasıl çalıştığını gösterir, burada yaptığınız şey System.Type'dan System.Collection.IEnumerable'a yayınlanmaya çalışmaktır. System.Type bu arabirimi uygulamadığından çalışmaz. Belki de ** typeof (IEnumerable) .IsAssignableFrom (örnek.GetType()) ** – MattDavey