Es kann unter gewissen Umständen ganz praktisch sein, zu erfahren, ob ein Objekt ein bestimmtes Interface implementiert hat. Beispielsweise wenn man eine Reihe von Templates (UserControls) in einer Collection (PlaceHolder) hat, und jetzt genau die UserControls herausfiltern möchte, die eine bestimmte Bedingung erfüllen - anstatt hier festverdrahtet die Namen irgendwo zu speichern und darüber abzugleichen, könnte man z.B. auch in den Controls einfach ein Interface zur Kennzeichnung implementieren.
Das dann wieder auszulesen geht wie folgt:
static bool MyFilter(Type m, object filterCriteria)
{
return m.Name.Equals((string)filterCriteria);
}
protected override void OnInitComplete(EventArgs e)
{
base.OnInitComplete(e);
PlaceHolder itemPlaceholder = new PlaceHolder();
// Work [...] UserControls in PlaceHolder laden ...
foreach (Control c in itemPlaceholder.Controls)
{
if(c.GetType().FindInterfaces(new TypeFilter(MyFilter),
"IEnableRssSubscription").Length > 0)
{
// Das UserControl hat das Interface
// "IEnableRssSubscription" implementiert
}
}
}