为什么公共字段和属性可以互换二进制兼容?

2023-12-31

在日常工作中,我开发一个 VB6(我知道,但不要嘲笑这个受苦的人……)应用程序,该应用程序使用了我们编写的许多库(也在曾经杰出的 VB6 中)。其中一个支持库有大量通过公共属性公开的私有成员,我被要求删除这些属性,并将私有成员变量提升到与原始属性同名的公共字段中。

现在,我不是 COM 专家,但我的印象是类中的每个公开项目都有它自己的 GUID。由于我们将从每个值从 2 个 Guid(Property Get 和 Property Let)变为仅使用一个(公共字段)的情况,我预计这会破坏二进制兼容性 - 但似乎并没有没有这样做。

谁能解释为什么?


No, it hasn't破坏了兼容性,因为它hasn't删除了 property get 和 property let 方法。只是编译器现在正在为您编写它们。

这难道不是 VB6 可以说的少数几个领域之一吗?better比.Net?

  • 在 .Net 中,公共字段的行为与公共属性不同,这使一些重构变得困难并导致混乱 https://devblogs.microsoft.com/vbteam/properties-vs-fields-why-does-it-matter-jonathan-aneja/.
  • 在 VB6 中,公共字段的行为与公共属性完全相同,这就是为什么可以在不影响二进制兼容性的情况下进行切换。编译器在幕后产生 https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa716305(v=vs.60)公共字段的属性获取和设置例程。从某种意义上说,VB6已经自动实现了属性(现在做广告的 https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/dd293589(v=vs.100)作为 VB10 中的“新功能”)...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么公共字段和属性可以互换二进制兼容? 的相关文章

  • C# 组件事件?

    我正在尝试编写一个将公开事件的 C 组件 该组件将由非托管 C 应用程序导入 根据一些教程 我想出了这段代码 针对 C 端 namespace COMTest ComVisible true Guid 02271CDF BDB9 4cfe
  • VB6 变体类型

    我有面向对象的背景 为什么在此代码片段中 在消息框中 显示 Test 注意引号 我希望逻辑测试 If Test True 返回 False 因为变体包含布尔值而不是字符串 因此 我不希望出现消息框 但它确实出现了 Dim Test As V
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 向用户显示多条验证消息

    在 MS Access 中 如何将从 SELECT 语句检索到的行存储在数组中 并在一个消息框中显示多行 Dim rSEL rSUM rDes As DAO Recordset Dim vItem id vQnty vSum As Inte
  • VB.NET会自动生成ComClass属性和guid吗?

    我运行过一些 VB NET 代码 这些代码显式创建三个 GUID 常量并在类的 ComClass 属性中使用它们 我过去只是通过检查项目选项中的 使 COM 可见 和 注册 COM 互操作 选项来编写 COM 感知类 这个显式代码是否根本没
  • 使用网页浏览器控件保存网页

    我正在使用 VB6 和网络浏览器控件导航到网页 我想定期保存我访问的页面 而无需任何手动干预 我知道如何使用 DOM 解析 HTML 但还需要保存页面而不显示任何对话框 这可能吗 将不胜感激一些帮助 谢谢 陶菲克 This 微软知识库文章
  • 在 VB6 中使用 Crystal Reports 时出现错误 20728-F

    我在 VB6 项目中使用 Crystal Reports 但在加载报表时遇到错误crystalreport1 action 1 请给我一些解决这个问题的方法 它显示错误为Error in 20728 F cryStockReport Rep
  • C# 暴露给 COM - 接口继承

    假设我有一个实现 IBaseClass 的类 BaseClass 然后我有一个继承IBaseClass的接口IClass 然后我有一个名为 class 的类 它实现了 IClass 例如 ComVisible true InterfaceT
  • 如何在 VB6 中创建自动完成组合框?

    是否可以使用VB6下默认的ComboBox控件使其成为智能ComboBox 我们假设这些值已填充到组合框中 例如 New Delhi New World New York 我们需要 ComboBox 响应一个默认事件 因此当用户写入 N 时
  • 使用 VS2012 中的 C++ 中的 ATL 创建 COM

    尝试在 Visual Studio 2012 中使用 ATL 创建简单的 COM 库 我愿意 New ATL Project Welcome to the ATL Project Wizard Next Application Settin
  • 如何在 VB 6 中使用打开文件对话框?

    我想从目录或其他系统中选择一个文件 如何在 VB 6 中使用打开文件对话框 有一些示例代码这个问题 https stackoverflow com questions 289276 vb6 selecting a file to later
  • 我想在 Windows 10 操作系统上安装 VB6。我需要处理 VBP 项目,所以我必须无缝安装 VB6

    我已经设置了VB6企业版 但无法完成安装 挂起 我已尝试通过以下链接安装程序 http nuke vbcorner net Tools VisualStudio6Installer tabid 93 language it IT Defau
  • EF 中的 GUID COMB 策略

    有没有办法使用 CodeFirst 设计为新的 Entity Framework 4 1 中的对象实现 Guid COMB 身份策略 我想设置StoreGeneratedPattern可以 但它仍然给我正常的 GUID 为什么要担心数据库中
  • Interop.Excel 和 Tools.Excel 之间的区别?

    我目前正在开发 Microsoft Excel 的插件 但我对某些事情有点困惑 两者有什么区别Interop Excel and Tools Excel 例如 之间Interop Excel Workbook and Tools Excel
  • VB 6源代码,语音文本是法语想要翻译成英语[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个可能对我有用的程序 但文档和所有工具提示均采用我无法阅读的语言 源代码是可用的 整个事情大约有 84 000 行代码 我的问题
  • 如何在 IE9 中检测用户禁用了某个加载项?

    IE9 用户可以通过单击齿轮按钮并选择 管理加载项 来禁用加载项 例如浏览器帮助程序对象 我需要使用 JavaScript 检测给定的附加组件是否已以这种方式被禁用 我似乎无法找到错误处理程序的方法
  • ATL COM 类注册 .rgs 文件默认值

    我正在创建一个 COM 服务器可执行文件 并且遇到了类注册问题 当我创建类对象时 自动生成的 rgs 文件如下所示 HKCR NoRemove CLSID ForceRemove 4C6DAD45 64B4 4C55 81C6 4CE125
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • 某些笔记本电脑中的 VB.net Forms UI 显示问题

    我是 VB 应用程序的新手 无法弄清楚我的应用程序出了什么问题 有一个带有几个标签和文本字段的表单 当我在我和其他人的机器上运行该应用程序时 它显示良好 并具有正确的对齐和字体 然而 对于某些人来说 应用程序表单 UI 是破碎的 未对齐的文

随机推荐