2009-07-22 2 views
1

Я определенные классы:Почему компонент BindingSource не видит унаследованные свойства?

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;} 
} 

Когда я пытаюсь связать управление, например IChild, я могу сделать это для ChildText собственности, но не для ParentText собственности. если я пытаюсь связать экземпляр Child, оба свойства являются связываемыми. Почему механизм привязки данных не видит свойства, унаследованные от других интерфейсов?

EDIT: SharePoint Newbie прав: данные привязки работают, если они определены вручную в коде. Однако я попытался определить привязки данных в дизайнере, используя компонент BindingSource. Когда вы добавляете исходный объект для проекта и указываете его на интерфейс IChild, только видимость ChildText может быть определена для привязки.

Я обновил название вопроса, чтобы лучше отразить мою проблему.

+0

Уверены ли вы? Он должен связываться без каких-либо проблем. Сделали это в прошлом. –

ответ

0

Не совсем уверен в этом, но здесь идет:

Поскольку IChild только наследует от IParent, он не может видеть реализацию (т.е. прибудет аксессор) из ParentText, потому что существует в Родитель, не IParent. Таким образом, привязка к IChild не наследует свойство ParentText.

На самом деле, я не уверен, почему вы привязываетесь к интерфейсу вообще. Что вы можете сделать привязкой к IChild, которую вы не можете привязать к Child?

+0

У меня много реализаций IChild. Мой вид (форма) не знает точной реализации, поэтому мне нужно работать с интерфейсом. – Przemaas

+0

Мэтью, та же логика, которую вы можете применить к свойству ChildText, но ChildText видна для привязки данных – Przemaas

Смежные вопросы