2009-07-22 11 views
1

Ich habe definierten Klassen:Warum die BindingSource-Komponente vererbte Eigenschaften nicht sehen kann?

public class Parent : IParent 
{ 
    public string ParentText 
    { 
     get { return "ParentText"; } 
    } 
} 

public interface IParent 
{ 
    string ParentText { get;} 
} 

public class Child : Parent, IChild 
{ 
    public string ChildText 
    { 
     get { return "ChildText"; } 
    } 
} 

public interface IChild : IParent 
{ 
    string ChildText { get;} 
} 

Wenn ich versuche zu IChild Instanz Kontrolle zu binden, kann ich diese Eigenschaft für childtext tun, aber nicht für ParentText Eigenschaft. Wenn ich versuche, an die Child-Instanz zu binden, sind beide Eigenschaften bindbar. Warum zeigt der Datenbindungsmechanismus keine Eigenschaften an, die von anderen Schnittstellen geerbt wurden?

EDIT: SharePoint Newbie hat Recht: Datenbindungen funktionieren, wenn sie manuell in Code definiert werden. Ich habe jedoch versucht, im Designer mit der BindingSource-Komponente Datenbindungen zu definieren. Wenn Sie dem Projekt Objektquelle hinzufügen und auf die IChild-Schnittstelle verweisen, ist nur ChildText zum Definieren von Bindungen sichtbar.

Ich aktualisierte Titel der Frage, um mein Problem besser widerzuspiegeln.

+0

Sind Sie sicher? Es sollte ohne Probleme binden. Habe das in der Vergangenheit gemacht. –

Antwort

0

nicht ganz sicher darüber, aber hier geht:

Da IChild nur von IParent erbt, kann sie nicht sehen, die Implementierung (das heißt, die get-Accessor) von ParentText, denn das ist in Parent existiert, nicht IParent. Daher erbt die Bindung an IChild nicht die Eigenschaft ParentText.

In der Tat bin ich nicht sicher, warum Sie überhaupt an eine Schnittstelle binden. Was können Sie erreichen, wenn Sie IChild binden, dass Sie nicht an Child binden können?

+0

Ich habe viele Implementierungen von IChild. Meine Ansicht (Formular) kennt keine genaue Implementierung, daher muss ich mit Schnittstelle arbeiten. – Przemaas

+0

Matthew, die gleiche Logik, die Sie auf die ChildText-Eigenschaft anwenden können, aber ChildText ist für die Datenbindung sichtbar – Przemaas

Verwandte Themen