Wywołanie metod na obiektach w comboboxie

0

Witam. Załadowałem do comboboxa kilka obiektów różnego typu i chciał teraz na nich wykonać pewne metody. Robię to w taki sposób. Ale zastanawiam się, czy da się to jakoś zrobić bez rzutowania. Coś w stylu " comboBox2.SelectedItem.setAccelerate() "

 
 if (comboBox2.SelectedItem is Dolphin) // typ obiektu

                Object obiekt = comboBox2.SelectedItem;iety 
                Dolphin Delfin = (Dolphin)obiekt;
       
                    Delfin.setAccelerate(Convert.ToInt32(textBox1.Text));
                    Delfin.setRise(Convert.ToInt32(textBox2.Text));
                    Delfin.setDive(Convert.ToInt32(textBox3.Text));
                    comboBox2.SelectedItem = Delfin;
   
0

Musisz rzutować, pytanie dlaczego aż tak Ci na tym zależy. Nie musisz rzutować najpierw na obiekt, a potem na swoją klasę.

 
Dolpin dolphin = (Dolphin)comboBox2.SelectedItem;
0

Chodzi mi o to, że nie chce sprawdzać jaki to jest typ obiektu, tylko jakie ten obiekt implementuje interfejsy. I jak już sprawdzę, że ten obiekt implementuje dany interfejs , to czy potem muszę sprawdzać jaka to klasa i robić rzutowanie, żeby wywołać metodą z tego interfejsu ?

0
public interface IFoo
{
       void setAccelerate(string value);
}
 
public class Bar : IFoo
{
        public void setAccelerate(string value)
        {
                //...
         }
}
 
IFoo foo= (IFoo)comboBox2.SelectedItem;
foo.setAccelerate();
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1