问题标签 [early-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
114 浏览

.net - 在引用程序集的多个版本之间自动切换

我需要从包含一个 C# WinForms 项目的解决方案中引用 EmguCV。

同一个库有四个版本,即 x86 和 x64,每个版本都支持和不支持 GPU。该库需要引用 EmguCV 的托管 DLL 以及 OpenCV 的非托管 DLL。通过构建后事件将正确的非托管版本复制到[Bin]文件夹很容易。

我希望能够通过代码轻松地在托管引用之间切换。可能类似于以下内容:

由于我在编译时引用这些程序集(不是后期绑定),有没有一种方法可以基于 的值以编程方式在版本之间切换[EmguCvTarget]

0 投票
1 回答
617 浏览

outlook - Outlook mailitem.save 方法的后期绑定问题

我有一个使用另一封电子邮件的内容(使用 Outlook Redemption 库)重新创建电子邮件的功能。我几乎已经完成了将其转换为早期绑定(我在 vb.net 中使用 Option Strict ON),但 Visual Studio 2010 强调了 .save 和 .move 行,并显示错误“option strict on disallows late binding”。

代码是:

解决了其他后期绑定错误后,我看不出为什么这两种方法被标记为问题。

帮助刘易斯

0 投票
1 回答
325 浏览

dynamics-crm-2011 - CRM 开发 - 支持多个组织的早期绑定方法

当我们想用 C# 开发一个支持与多个 CRM 系统通信的 CRM 库(管理器)时,我们遇到了这个问题——即同时运行多个 CRM 实例(例如两个不同的组织)的情况)。

CRM 库的要求:

  1. 使用 early-bound 而不是 late-bound(因为类型安全)

  2. 能够通过一名经理与更多的CRM系统(组织)进行沟通

  3. 对于所有 CRM 系统(组织)仅使用一种操作(避免代码重复)的一种方法 - 有必要为每个组织创建一个用于解析生成的实体文件的实用程序(crmsvcutil 工具)。解析的结果将是实体文件中定义的实体的接口和部分类的列表。接口将根据它们包含的属性在部分类中实现,如 IAccountNumber 等。将有两组接口 - 第一组用于两个组织中共有的实体属性,例如接口 ICrmAccount 将定义 AccountNumber、Name、Address1 属性等. 第二组接口将用于实体唯一且不存在于所有 CRM 系统(组织)的实体中的属性。

我们设计了一个解决方案,该解决方案现在能够与两个不同的 CRM 系统进行通信,但它无法为特定帐户使用已实现的接口,请参阅包含代码注释的随附解决方案。

可以在这里找到解决方案:

下载链接

解决方案说明:

CRM_BusinessLogic - 包含 CRMManager,它保存所有通信方法并在构造函数中初始化正确的数据上下文

CRM_Interfaces - 包含所有生成的接口,这些接口是实体文件解析的结果(这必须使用单独的解析工具来完成)。现在只包含 iCRMAccount 只包含两个组织和 iCRMContext 共有的一个属性,其中包含在两个数据上下文中实现的实体 - 现在两个上下文都实现相同的实体 Account。

CRM_SCEurope - 包含为第一个 CRM 组织 SC Europe 生成的实体文件 - SCEuropeEntities.cs,由解析工具生成的数据上下文(根据组织上下文中存在的实体实现接口列表) - SCEuropeContext_generated 和返回正确的 SCEuropeContext.cs部件

CRM_SoSW - 与 CRM_SCEurope 相同的内容,包含与第二个 CRM 组织相关的数据

CRM_Test - 包含将与两个组织进行通信的测试控制台应用程序

请注意,随附的解决方案仅包含具有名称参数的帐户实体,足以对设计的解决方案进行基本测试。

重要提示:在运行项目之前,您必须在 Program.cs 文件(CRM_Test 项目)中为经理设置凭据。

如您所见,如果使用生成的部分类(SoSwContext、SCEuropeContext)从 CRM 加载帐户数据并实现接口 iCRMContext,应用程序会抛出异常“无效的‘where’条件。实体成员正在调用无效的属性或方法- 查看方法实现。”。

如果有人能找到解决异常的方法,我们将不胜感激。

谢谢

帕维尔

0 投票
2 回答
2095 浏览

dynamics-crm-2011 - ServiceContext(早期绑定)检索导致 CRM 2011 插件中的 InvalidCastException

我的问题与这篇文章非常相关,但我无法将所有部分组装在一起。我正在尝试通过插件代码中的 LinqSystemUser使用ServiceContext对象进行获取,XrmServiceContext如下所示:

但我得到以下信息InvalidCastException

无法将“Microsoft.Xrm.Sdk.Entity”类型的对象转换为“Xrm.SystemUser”类型。

CrmSvcUtil而通过放置在单独的程序集中(插件程序集除外)生成的早期绑定类。

这很奇怪,好像我将生成的早期绑定类放在插件程序集中它工作得很好。

我的小研究使我创建了单独的OrganizationServiceProxy对象,但是当我已经IOrganizationService使用创建时为什么要创建一个serviceFactory.CreateOrganizationService(context.UserId)

那么如何通过将生成的代码保留在插件程序集之外来解决这个问题呢?

0 投票
0 回答
110 浏览

java - 为什么它不是早期绑定?

这是后期绑定的示例,但是当我编译此代码然后使用 cavaj 反编译时,我发现此代码 ab.java:

如果是后期绑定,那么编译器不必知道 display() 方法来自 c 类,但在这里它是知道的,因为它替换
了 mn=new c(); 与
c c1 = 新 c(); ,所以这是早期绑定??

0 投票
1 回答
653 浏览

python - 如何使用 cx_freeze 和 win32com 强制绑定?

我制作了一些 python 脚本来控制外部 CATIA 应用程序。我现在必须将这些脚本打包成可执行文件,但我无法做到。

问题 :

构建脚本后,如何强制 win32com 对特定模块使用早期绑定?


细节 :

我的脚本使用win32com.client模块控制 CATIA 应用程序。我使用后期绑定处理 CATIA,但模块CATIA V5 SpaceAnalysisInterfaces Object Library包含具有参考输入/输出参数的函数。对于这个我使用早期绑定,遗憾的是,简单地使用MakePy还不够,我不得不修改从win32com.gen_py包生成的源代码,以从输入/输出参数中获得正确的行为。现在当我执行 python 脚本时它工作正常。但是,如果我使用py2execx_freeze构建它们,则可执行文件仅使用后期绑定,因此我得到了不好的结果。

这是我挂钩 CATIA 应用程序并使用其 API 的方式:

这是我使用cx_freeze的构建脚本:

这个构建脚本会生成一堆文件,包括我实际的win32com.gen_py模块的内容,所以它应该可以工作。但是当我执行文件时,它只使用后期绑定。当我使用py2exe时,我无法检查文件是否正确添加,但行为完全相同:后期绑定!


我看了一下这篇文章,但我的问题有所不同。模块被正确复制并且脚本不会引发异常。输入/输出功能无法正常工作。

任何帮助,将不胜感激。

0 投票
3 回答
2350 浏览

vba - 在不更改对象类型的情况下将早期绑定转换为后期绑定

这似乎是一个简单的问题,但我在追逐论坛几个小时后认为这可能是不可能的。

我经常想将程序从早期绑定转换为后期绑定。通常,它是一个 vba,应用程序的 Visual Basic,在 Excel 2010 和 windows 7 pro 下运行的程序。

出于讨论的目的,让我们假设它是以下内容。

以我的经验,将这样的程序转换为后期绑定有时很困难。

例如,我发现一些论坛建议我将其更改为

但这会创建一个 IShellDispatch5 对象,而不是 IshellWindows 对象。这意味着我必须更改其他代码以适应新的对象类型。而且,当然我必须测试其他代码的细微差别。

因此,我的目标是找到一个通用解决方案,允许我重写“Line1”以创建具有后期绑定的正确对象类型。我还希望避免设置对“Microsof Internet Controls”的引用。换句话说,我希望代码看起来像这样:Sub LateBind()

我知道如何使用 vba IDE 来查找与对象关联的 dll。在这种情况下,dll 是 Library SHDocVw C:\Windows\SysWOW64\ieframe.dll。

我已经安装了 OleView,并且可以为 clsId、TypeLib 和接口找到相关的 IshellWindows“幻数”(例如接口是 85CB6900-4D95-11CF-960C-0080C7F4EE85)。

但是,我不知道如何将它们转换为可以在上面发布的示例代码中的 line1 中使用的程序 id。

我希望这里有人可以提供帮助。------ 在 MeHow 的帮助下,我现在有了答案!------

将“set myObj = new xxxx.yyyyy”切换为任意对象类型的后期绑定

很多时候这会奏效。

但是,在某些情况下(例如“shDocVw.ShellWindows。”)它会给出错误 429 ActiveX 组件无法创建。

当这种情况发生时,我完全不走运。不可能对那个 EXACT 对象类使用后期绑定。相反,我必须找到一个替代类来做大致相同的事情。(例如“Shell.Application”)。

0 投票
1 回答
59 浏览

asp.net - 为什么从 ProductSet 首次加载时延迟 30 到 40 秒?

Crm 产品实体包含 40,000 条记录。

在 CustomerPortal 中,我只是获取所有产品并将它们绑定到 Grid。

获取查询和绑定代码如下:

这工作正常,但仅在第一次加载时才需要 30 到 40 秒才能加载(之后,相同的页面只需 2 秒即可加载)。

我没有使用会话/缓存之类的东西。

如果我使用下面的查询(只取 5 条记录),那么延迟行为也是一样的:

为什么第一次加载时延迟 30 到 40 秒?

0 投票
1 回答
448 浏览

.net - 在调用 .net com dll 时强制 VB6 编译器使用早期绑定

我有一个用 c# 编写的 com dll 运行 Regasm 后,我可以从 VB6 调用这个 dll,引用 com dll。在 VB6 中,我可以使用智能感知。

但是,当我按 F5 编译时,编译器在调用 com dll 时没有发现任何错误。它必须使用后期绑定。

我怎样才能让它使用早期绑定?

接口声明

主类被声明

[更新]

在 VB6 项目中,我引用了我使用创建的 tlb 文件

在 VB6 中,我使用创建对象

0 投票
2 回答
999 浏览

vba - 嵌入式 Word 文档的后期绑定与早期绑定

我在让我的嵌入式文档在旧版本的 MS Office 上运行时遇到问题。我相信问题在于我如何声明我的对象,但不确定如何使用后期绑定声明我的嵌入式文档(我对这个概念和 vba 仍然很陌生)。下面是我目前如何与一段代码一起进行变量声明。它在 Excel 2013 中运行良好,但由于我声明变量的方式(我相信),它在 2010 年无法运行。

我尝试将 oDoc 和 oTemplate 设置为“作为对象”,但不确定如何将它们链接回 word 对象。这样做只会导致库引用在 PasteAndFormat 调用的“wdFormatOriginalFormatting”上失败。

我一直在扯头发试图弄清楚这一点。任何帮助将不胜感激。谢谢!