绑定 IList 不显示 IMyInterface 继承的接口成员

2024-03-23

我将 IList 绑定到 GridView。 IMyInterface 看起来像

public interface IMyInterface: IHasTotalHours, IHasLines
{
    DateTime GoalStartDate { get; set; }
    DateTime GoalEndDate { get; set; }
}

我将一个实例绑定到网格,如下所示:

IList<IMyInterface> instance= GetMyData();

myGrid.DataSource = instance;
myGrid.DataBind();

当将此绑定到网格时,网格中显示的唯一成员是 IMyInterface 的直接成员:GoalStartDate 和 GoalEndDate。

这是为什么?如何让网格显示它继承的其他接口的成员?

Update继承的接口定义了简单的数据属性,例如

public interface IHasTotalHours
{
    string Description { get; set; }
    int Hours{ get; set; }
}
public interface IHasLines
{
    double TotalLines { get; set; }
    double LinesPerHour { get; set; }
}

有一个类实现了IMyInterface:

public class MyClass : IMyInterface
{
    public string Description { get; set; }
    public int Hours { get; set; }
    public double TotalLines { get; set; }
    public double LinesPerHour { get; set; }
    public DateTime GoalStartDate { get; set; }
    public DateTime GoalEndDate { get; set; }

}

它们被转换为 IMyInterface,并在我绑定到 GridView 的列表中返回。


数据绑定控件不使用反射,而是使用 TypeDescriptor 从数据源获取属性。在里面类型描述符.GetProperties http://msdn.microsoft.com/en-us/library/ybh0y4fd.aspx方法,您可以阅读以下内容:

组件的属性可以 与类的属性不同, 因为网站可以添加或删除 属性(如果组件已定位)。

显然,默认实现只会从接口返回直接属性,而不是继承的属性。

幸运的是,这个机制是可扩展的,你可以编写一个类型转换器 http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter.aspx具有自定义属性信息实现的类。属性逻辑的​​实现请参考TypeConverter文档中的备注。

自定义 TypeConverter 类的 GetProperties 实现可以在您的接口及其所有继承接口上调用 TypeDescriptor.GetProperties(Type)。但也许您甚至可以编写一个通用的 TypeConverter,它可以使用反射查找所有继承的属性。

然后,您可以使用 TypeConverterAttribute 属性将此自定义 TypeConverter 附加到您的界面。

然后,就像魔术一样,数据源将找到所有属性。 ;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定 IList 不显示 IMyInterface 继承的接口成员 的相关文章

随机推荐

  • 使用 Swift 构建 Cocoapod 并依赖于 Objective-C 框架

    我知道这里已经有一些关于这个主题的问题 但很少有人接受答案 而且我认为我没有找到与我完全相同的问题 我正在构建一个 Swift pod 在我的代码中我依赖于 Google Maps iOS SDK 它捆绑为 framework文件 该项目在
  • 如何将受邀用户与邀请人的公司/群组关联起来?

    我正在使用 Django django allauth 和 django invitations 我能够成功邀请用户加入该平台 但我想将他们与邀请者的公司关联起来 我已经阅读了 bee keeper django invitations 但
  • 我可以使用 Apache-Poi 将 Excel 电子表格格式化为流模式下的表格吗

    A regular spreadsheet tab in Excel can be made into a table by selecting the data and ctrl T This gives each column a he
  • 如何检测 Horizo​​ntalScrollView 内的视图何时接触另一个视图?

    所以我试图创建像滚动视图一样的 iMovie 我想在滚动视图内的图像触摸白线时得到回调 这样我就可以更改大图像 我怎样才能做到这一点 这个解决方案对我有用 也是我在对 Horizo ntalScrollView 的选项进行长期研究后能够找到
  • 龙卷风只能升级到websocket错误

    我正在使用龙卷风进行实时应用 我正在为此使用 Redis 当我访问网址时127 0 0 1 8888 2 其中 2 是我的用户 ID 我收到错误消息can Upgrade only to websocket 我不知道为什么我会收到此错误 这
  • 处理“javax/xml/XMLConstants.class”时出现问题

    我正在启动一个新的 Android 项目 该项目引用了一个第三方 JAR 而该第三方 JAR 又引用了其他 4 个 JAR ws commons java5 1 0 1 jar ws commons util 1 0 2 jar xmlrp
  • as3 AIR for android - 应用程序沙箱内容错误

    目标 我试图允许外部加载的 swf 文件与从设备本地加载的文件相互通信 我需要能够访问变量 函数和对象 我在从网上加载 swf 内容时已经实现了这一点 as3 从网络外部加载的swf 控制从网络外部加载的swf https stackove
  • 如何在 Spark 中从文本文件创建 DataFrame

    我在 HDFS 上有一个文本文件 我想将其转换为 Spark 中的数据帧 我正在使用 Spark 上下文加载文件 然后尝试从该文件生成各个列 val myFile sc textFile file txt val myFile1 myFil
  • PHP PDO 数据库错误特殊字符

    我已经阅读了有关这种情况的大部分问题和答案 但我无法解决我的性格问题 我的数据库的默认字符集是utf8 所有表的排序规则是utf8 general ci 我确信所有设置都是 utf8 和 utf8 general ci 因为我已经检查了它们
  • 春天有像温莎城堡里的@predestroy 这样的东西吗

    任何类似的东西 PreDestroy在弹簧框架中 如果您定义了一个实现 DisposableBean 接口的 bean 那么 Spring 将调用 void destroy throws Exception 销毁 Bean 之前的方法 这是
  • Python 3 中未解决的全局变量引用

    所以 我不知道为什么 但我在以下函数中收到来自 Pycharm 的 未解析的引用 警告 它们的共同点是运算中也使用了赋值变量 我不明白为什么这行不通 对于警告的内容有什么想法吗 我确实读过这个线程 PyCharm 中未解决的参考问题 htt
  • py2exe 未找到所有依赖项

    我正在尝试从 python 代码创建一个 exe 我可以从命令行很好地运行代码 如下所示 python myScript py 我从这里安装了 py2exe http sourceforge net projects py2exe file
  • 事务内部只允许Ancestor查询,如何处理?

    我需要在 a 内进行查询Transaction 但是我不知道实体 Id 我拥有的是一个字段的值 例如用户名 但不是ID 换句话说 我无法创建一个Key进行查询 我如何进行查询以获取实体内的实体Transaction 在不深入研究更深层次的设
  • 如何从 C++ Windows 客户端使用 ETW

    我正在研究Windows 事件跟踪 https learn microsoft com en us windows hardware test wpt event tracing for windows ETW 允许用户模式 Windows
  • 我如何退出我的应用程序?

    我如何退出我的应用程序 我希望当用户单击按钮时 该应用程序将完全退出 我看到了任何有关它的答案 但他们将该应用程序带到了后端 我想彻底退出 在这个方法中你可以调用exit 在任何地方运行并退出应用程序 所以要随时关闭应用程序 请使用FLAG
  • 查找目录中的文件数

    Linux 中是否有任何方法可以在 O 1 内计算目录 即直接子级 中的文件数 与文件数无关 而不必先列出目录 如果不是 O 1 是否有一种相当有效的方法 我正在寻找替代方案ls wc l readdir 并不像您想象的那么昂贵 诀窍是避免
  • C#:如何使用 directshow.net 显示此对话框?

    如何使用 Directshow net 调用此对话框 过滤图 https stackoverflow com questions 4680606 c how to open configuration pin dialog 假设您有 IBa
  • C语言中如何释放内存?

    我正在编写具有大量一维和二维数组的代码 我收到 错误 无法分配区域 我认为这是因为分配了太多内存 我使用 malloc 和 free 函数 但我不确定我是否正确使用它们 也许你知道我在哪里可以看到关于 C 内存管理的好例子 所以 我只是想让
  • 没有可用于离线模式的缓存版本 Gradle 插件

    我有一段时间没有使用 Android Studio 但决定更新所有内容并创建一个新项目 如果我转到 首选项 gt 构建 执行 部署 gt Gradle 我会收到上述错误 没有像其他地方建议的那样 离线工作 选项没有可用于离线模式的 grad
  • 绑定 IList 不显示 IMyInterface 继承的接口成员

    我将 IList 绑定到 GridView IMyInterface 看起来像 public interface IMyInterface IHasTotalHours IHasLines DateTime GoalStartDate ge