Ich habe zwei Schnittstellen, eine generische und eine nicht-generische, der eine inheritence Hierarchie haben:Wie listet ich alle Elemente auf, die eine generische Schnittstelle implementieren?
public interface IGenericRelation<TParent, TChild> : IRelation
public interface IRelation
Der generische eine von mehreren Serversteuer implementiert ist, die dynamisch und ich wünsche aufzuzählen auf die Sammlung von Kontrollen geladen werden, die diese Schnittstelle implementieren. Ich kann wie folgt vorgehen
foreach (IRelation relationControl in this.uiPlhControls.Controls.OfType<IRelation)
{ ... }
Aber was ich wirklich in der Lage sein möchte, ist zu tun ...
foreach (IGenericRelation<,> relationControl in this.uiPlhControls.Controls.OfType<IGenericRelation<,>)
{ ... }
und dann in der Lage sein, die relationControl
mit den Typen zu verwenden, die sie geliefert als dann hätte ich Zugriff auf die stark typisierten Eigenschaften, die in IGenericRelation verfügbar sind. Leider ist das nicht möglich, da ich die Typparameter nicht weglassen kann.
Kennt jemand eine Möglichkeit zum Aufzählen der Steuerelemente, die eine generische Schnittstelle implementieren, damit ich nicht mehrere Schleifen schreiben muss? Vielleicht mit Reflektion?
Ich erinnere mich an eine frühe Linq-Probe, die genau das tat, aber als ich Linq sah, konnte ich es nicht finden. Ich beobachte diesen Raum. . . –