Laden...

Interfacevererbung in Verbindung mit einer BindingSource bzw. einem DataGridview

Erstellt von woiperdinger vor 14 Jahren Letzter Beitrag vor 13 Jahren 1.327 Views
W
woiperdinger Themenstarter:in
22 Beiträge seit 2010
vor 14 Jahren
Interfacevererbung in Verbindung mit einer BindingSource bzw. einem DataGridview

Erst mal ein herzliches Hallo an alle.

Ich hab ein kleines Problem bezüglich Interfacevererbung in Verbindung mit einer BindingSource bzw. einem DataGridview.

  interface IParent
    {
        string Name { get; set; }
    }

    interface IChild : IParent
    {
        int Alter { get; set; }
    }

Gebe ich bei DataSource meiner Bindingsource IChild an und binde diese BindingSource dann an ein DataGridview, wird nur "Alter" angezeigt, nicht aber "Name" von IParent.
Weise ich der Bindingsource statt IChild eine Implemnentierung davon zu, sehe ich auch "Name".
Allerdings hab ich dann keine Kapselung mehr wenn ich die Implementierung public machen muss.

So wie es aussieht ist es ein Reflection-Problem!?
Aber mir leuchtet es nicht so ganz ein warum es nicht geht da Vererbung und Kapselung ja einer der Grundsätze von .NET ist.

Hatte jemand schon mal ein solches Problem und wenn ja, was kann man machen außer die Software-Architektur um ein paar Interfaces zu erleichtern und die Implementierungen publich zu machen??

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo woiperdinger, (BTW: Ist das eine Anspielung auf Wolpertinger??

herzlich willkommen hier auf myCSharp.de!

Ja - das scheint ein Bug zu sein - ist ähnlich wie in in [gelöst] ComboBox DataSource findet DisplayMember nicht
Da steht auch ein Workaround

W
woiperdinger Themenstarter:in
22 Beiträge seit 2010
vor 14 Jahren

Danke für die schnelle Antwort und ja, es ist eine Anspielung auf den Wolpertinger. 😉

Ich hab mir heute die Antwort in der Arbeit angesehen und auch getestet.

An sich wäre überschreiben eine Lösung, aber ich habe teilweise etwas tiefere Vererbungsebenen und da geht irgendwie auch der Sinn etwas verloren wenn ich dann alle Properties immer überschreiben muss.

Drum hab ich mich dafür entschieden die betroffenen Interfaces zu entfernen.
Jetzt läuft alles ohne Probleme. 😁

731 Beiträge seit 2006
vor 13 Jahren

Hallo,

ich kram den Thread nochmal raus, da ich zur Zeit dasselbe Problem habe.

Ich verwende die XtraReport-Suite von DevExpress und hatte mich gewundert, warum ich zur Design-Zeit nur Properties von InterfaceB (welches von InterfaceA erbt) sichtbar sind und nicht auch die von InterfaceA.

Gibt es da inzwischen Neuigkeiten oder weiß jemand ob das ein gewünschtes Verhalten sein soll?

MfG
wax

5.299 Beiträge seit 2008
vor 13 Jahren

(ich frage mich, wer sich so ein Verhalten wünschen würde 😉 ).

Ich muß zugeben, selbst nie mit Interfaces und Databinding gearbeitet zu haben. Ich kann aber beisteuern, dass man BindingSource beerben kann, und die GetItemProperties-Methode ist überschreibbar. Also könnte man es besser machen.

Der frühe Apfel fängt den Wurm.