【问题标题】:Get a list of Interface properties获取接口属性列表
【发布时间】:2017-10-22 07:19:33
【问题描述】:

我正在使用 Visual Basic (VB.NET) 中的 COM 库。我正在尝试获取与接口关联的属性列表;但是,我无法获取接口属性列表。有人可以指导我在接口上列出属性的最佳方式吗?

下面是一些示例代码,它遍历了一个名为“TextBox”的类的所有属性。此代码的输出是所有类属性的列表。

此特定代码似乎不适用于接口。我的意思是这段代码不返回接口的属性。

    Dim txt As New TextBox

    Dim type As Type = txt.GetType()

    Dim properties() As PropertyInfo = type.GetProperties()

    For Each p As PropertyInfo In properties

        OutputWindow(p.Name) 

    Next

Image of COM Library with Interface HYSYS.Valve

【问题讨论】:

  • this SO 问题中查看道格拉斯的答案。

标签: vb.net interface properties com


【解决方案1】:

只需将txt.GetType() 替换为GetType() operator 即可指定类型名称:

Dim type As Type = GetType(HYSYS.Valve)

只有当您已经拥有一个对象的现有实例时,您才会使用<object>.GetType()。要获取一般类型的属性,例如TextBox,最好使用GetType(TextBox)

【讨论】:

  • 我执行了你的建议;但是,结果只返回一个属性(即名称),而没有其他任何东西。如果我在对象浏览器中查看界面(请参阅原始帖子所附的图片),我会看到除名称之外的属性列表。
  • @jmsrz :这很奇怪,当我测试它时它起作用了。您可以在For Each 行上放置breakpoint 并检查properties 数组吗?
  • @jmsrz :我已经有几天没有收到你的消息了。怎么样了?请问你有没有这个接口的源代码,或者你知道我在哪里可以找到接口本身吗?我想尝试重现该问题。
  • 感谢您的跟进。属性数组仅列出一个条目(即名称)。您推荐的代码在技术上有效,但最大的问题是如何访问我在 VB 对象浏览器中看到的属性。为了回答您的问题,我有一个“类型库”作为参考添加到 Visual Studio。这个“类型库”包含有问题的接口。我有一份“类型库”的副本,但我不知道如何通过这个论坛分享它。 @visualvincent
  • @jmsrz :您唯一的选择是将其上传到DropboxMediafire 之类的网站,然后将链接发送给我。
猜你喜欢
  • 2019-04-08
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2011-08-31
  • 2013-12-28
  • 2014-05-11
  • 1970-01-01
相关资源
最近更新 更多