Bir arabirimin yansıma yoluyla bana verdiği tüm yöntemleri bulmaya çalışıyorum. Tüm arabirimleri ayıklamak için, yalnızca arabirimleri olduğunu doğruladığım bir tür dizim var. Ne yazık ki, typeof (IList) .GetMethods() gibi bir şey yaparsam, yalnızca IList üzerinde ICollection üzerinde olmayan yöntemleri döndürürse, veya IEnumerable Aşağıdaki linq sorgusunu denedim, ancak dış arabirimlerde bulunan yöntemleri döndürmez. Sorgumu nasıl düzeltebilirim? Bu SQL olsaydıLINQ kullanarak tüm yöntemleri bir [] arabirim [] üzerinde alın?
from outerInterfaces in interfaces
from i in outerInterfaces.GetInterfaces()
from m in i.GetMethods()
select m
Hepinize sendikayla bir özyinelemeli CTE gibi bir şey olabilir, ama böyle bir sözdizimi C# var sanmıyorum. Burada yardımcı olan var mı?
@LukeH: my düzenlemek bakınız. GetInterfaces() tüm arabirimleri alır ve sizin için hiyerarşi ağacını açar. – BFree
@LukeH: Vay, bunu hiç bilmiyordum. Bununla ilgili bazı belgeleri görmeyi çok isterim. Diğer dillerin (özellikle de VB.Net) bunu da yapıp yapmadığını merak ediyorum ... – BFree
@BFree: Biraz daha araştırma yaparken yorumumu sildim. Bundan emin değilim, eminim ki onu yetkili bir yerde okudum. Bunu söyledikten sonra, "GetInterfaces" nin yinelemeli olduğunu düşünüyorum, bu da gerçek davranışı cevabınızla alakasız hale getirecektir. – LukeH