vb.net - 一旦知道特定的变量类型,如何让 IntelliSense 更改列表成员?
问题描述
我正在使用 VB.net 在 Visual Studio 中为 Autodesk Inventor 编写插件。有许多不同类型的文档。当我知道文档的类型时,我希望 IntelliSense 列出该文档的成员。有没有办法做到这一点而无需Dim
-ing 一个全新的变量?
Sub Test(o_Doc As Inventor.Document)
Select Case True
Case TypeOf o_Doc Is AssemblyDocument, TypeOf o_Doc Is PartDocument
o_Doc. ' Intellisense lists the members for Inventor.Document
End Select
End Sub
输入后o_Doc
,我按句号,它会列出Inventor.Document
. 和都共享一个成员AssemblyDocument
,但并非每种类型的文档都如此。有没有办法列出所有成员,而不必在运算符之后插入?PartDocument
ComponentDefinition
AssemblyDocument
Case
Dim _AssemblyDocument as Inventor.AssemblyDocument= o_Doc
_AssemblyDocument. ' lists all the members of AssemblyDocument
编辑:将 Dim _AssemblyDocument 作为 Inventor.Document 更改为 AssemblyDocument
解决方案
我想说不,但从技术上讲,如果你只是在寻找一种在不声明新变量的情况下获得智能感知的方法,你可以强制转换,
Sub Test(o_Doc As Inventor.Document)
Select Case True
Case TypeOf o_Doc Is AssemblyDocument
DirectCast(o_Doc, AssemblyDocument). ' AssemblyDocument intellisense
Case TypeOf o_Doc Is PartDocument
' or if you access more than one member, With might be easier
With DirectCast(o_Doc, PartDocument)
. ' PartDocument intellisense 1
. ' PartDocument intellisense 2
End With
End Select
End Sub
但现在你有单独的案例。
同样,继承链中是否还有另一个类?
- Inventor.Document
- 另一个类/接口?
- 组装文件
- 零件文件
- 另一个类/接口?
我觉得很奇怪派生类会共享未在其基类或接口中声明的成员。如果它们确实共享另一个公共类或接口,那么您可以对其进行测试并转换为它,并且对于这两种类型只有一个案例。
推荐阅读
- java - 如何使用 keytab 文件的输入流解析 Web 服务的 TGS
- javascript - 默认的 Date.toLocalDateString() 基于什么?
- angular - 在 Angular 8 中,我遇到了 Angular 中组件重叠的问题。标题组件是重叠的子组件?如何克服?
- autodesk-forge - 在 Autodesk Viewer 中打开 Excel 文件
- rest - 如何使用 RESTful API 到 Libpod 库请求具有特定构建选项的构建
- spring - 将 Richfaces 迁移到 Primefaces 时替换 FilterServletResponseWrapper。用于文件下载
- database - powerBI 中的分层数据库和递归数据显示
- sql - 尝试更新/插入时缺少表的 FROM 子句条目
- intellij-idea - PyCharm - 文件浏览器消失
- mongodb - 如何排序并找到数组中的三个最大元素?