Свойства получены через (косвенно) TypeDescriptor.GetProperties (typeof (T)), но поведение такое, как и ожидалось.Свойства от интерфейсов никогда не возвращаются, даже из моделей на основе классов, если только они не находятся в открытом API этого типа (что для интерфейсов означает для непосредственного типа ).Наследование классов отличается, потому что эти члены все еще находятся в общедоступном API.Когда интерфейс: ISomeOtherInterface, то есть «реализует», а не «наследует».Чтобы привести простой пример того, когда это может быть проблемой, рассмотрим (полностью легально):
interface IA { int Foo {get;} }
interface IB { string Foo {get;} }
interface IC : IA, IB {}
Сейчас;что такое IC.Foo?
Вы могли бы обойти это, зарегистрировав собственный интерфейс TypeDescriptionProvider или используя ITypedList, но оба они сложны.Честно говоря, привязка данных легче работает с классами, чем с интерфейсами.