Laden...

Ist Interface implementiert?

Erstellt von Christel vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.157 Views
C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 15 Jahren
Ist Interface implementiert?

Hallo,

wie kann ich herausfinden, ob ein Control ein bestimmtes Interface xxx implementiert?
Sowas in der Art wie

if (control.Implements(xxx)) ...

oder

if (control.GetType().Implements(xxx)) ...

Danke,
Christel

Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.

D
462 Beiträge seit 2005
vor 15 Jahren

Hi!

if (control is <Interface>)

lg

C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 15 Jahren

Ja, klar.
Danke, aber manchmal sieht man den Wald vor lauter Bäumen nicht.
Christel

Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.

5.942 Beiträge seit 2005
vor 15 Jahren

Salute zusammen

In diesem Zusammenhang: [Tipp] Casten aber richtig: Begriffe wie Cast / is / as

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

3.971 Beiträge seit 2006
vor 15 Jahren

Hallo,
wobei auch hier der as-Operator vorzuziehen wäre:


<Interface> inst = control as <Interface>;
if (inst != null) {
  inst.DoSomething();
}

Bei dem is-Operator muss die CLR zweimal prüfen, ob der angegebene Typ das Interface implementiert oder von der Klasse erbt.

Wenns mal mit Reflection sein muss (Pluginsystem beispielsweise) empfiehlt sich:


if (typeof(<Interface>).IsAssaignAbleFrom(controltype)) {
  ...
}

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
142 Beiträge seit 2007
vor 15 Jahren

Hallo kleines_eichhoernchen,

ich finde das gilt abzuwägen. Bei einer Operation wo das nicht zwingend aus Performancegründen zu beachten ist würde ich beispielsweise die IS-Abfrage wegen besserer Lesbarkeit bevorzugen...

mfg Steav

3.971 Beiträge seit 2006
vor 15 Jahren

Hallo Steav,
Welche Variante besser lesbar ist, ist Ansichts- oder Geschmackssache

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...