Мне нужно, чтобы кто-то подтвердил то, что я вижу, прежде чем я смогу изменить домен приложения из-за этой проблемы. Проблема в том, что при привязке данных к интерфейсам, которые наследуются друг от друга, вы не можете видеть свойства базовых интерфейсов.
Я работаю над приложением WinForms, которое использует привязку данных. Это в .net3.5 и нет, я не могу использовать wpf.
В любом случае, у меня есть что-то вроде этого.
public interface IClassOne
{
string Prop1 { get; set; }
}
public interface IClassTwo : IClassOne
{
string Prop2 { get; set; }
}
public abstract class ClassOne : IClassOne
{
public string Prop1 { get; set; }
}
public class ClassTwo : ClassOne, IClassTwo
{
public string Prop2 { get; set; }
}
Базовый класс будет содержать общие свойства и логику. Базовый интерфейс будет иметь эти общие свойства, поэтому они должны быть реализованы в каждой конкретной реализации.
Если бы я связывал данные со своей структурой класса выше, я бы связывался с IClassTwo. Проблема в том, что когда я привязываю данные к IClassTwo, я не вижу Prop1 ни в одной из дизайнерских операций для WinForms. Даже если я обойду это ограничение и получу контроль, связанный с Prop1, это не сработает.
Однако, если я связываю два ClassTwo, то привязка данных работает.
Я не хочу иметь дело с конкретными классами, потому что это усложнит использование макетов и тестирование. Я также не хочу помещать все на IClassTwo, потому что мне пришлось бы повторять код, когда я делаю другую конкретную реализацию.
Мне нужно знать, действительно ли это не работает. Если вы знаете, почему, это было бы бонусом.
Спасибо
Tony