问题标签 [late-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 投票
2 回答
948 浏览

c - 动态加载和后期绑定有什么异同?

来自维基百科:

动态加载是一种机制,计算机程序可以通过该机制在运行时将库(或其他二进制文件)加载到内存中,检索库中包含的函数和变量的地址,执行这些函数或访问这些变量,并卸载记忆中的图书馆。

后期绑定是一种计算机编程机制,其中在运行时按名称查找对象上调用的方法。


在我看来,

相似之处在于它们都是在运行时查找方法的机制。

不同之处在于动态加载在运行时加载库后不需要使用链接器,但后期绑定总是需要链接器。

我不确定我是否正确,尤其是差异部分。我想从你的分析中了解更多。

0 投票
4 回答
1243 浏览

.net - 后期绑定静态调用 - C# 4.0

我的目标是能够使用智能感知,同时仍然指示编译器生成后期绑定代码(即 CallSites 和 Binder)。

说我有

我想写:

我希望 Data 属性调用是后期绑定的。然而目前,如果我不将provider变量声明为动态的,编译器将预先绑定调用。即在运行时,将返回存储在属性的支持字段中的值。

同时,我想要在编码时进行智能感知,这意味着我应该使用适当的类型声明提供程序。

有没有办法同时实现两端(使用静态声明进行智能感知,同时在运行时依赖动态绑定)?

编辑 1:有人可能想知道为什么不只使用 getter 来执行我需要的任何逻辑。问题是我正在尝试开发一些元类,这将允许开发人员只定义类和属性,使用 getter、setter、方法等,而神奇的是通过动态方式发生的。会有很多这样的类型,我想在类本身中避免这样的冗余代码。

编辑2:如果我可以声明一个具有属性的类,该属性告诉编译器延迟绑定对其成员的所有调用,那就太好了。

0 投票
6 回答
841 浏览

c++ - 如何确定编译器是在虚函数上使用早期绑定还是后期绑定?

我有以下代码:

我被要求确定编译器是对最终函数调用使用早期绑定还是后期绑定。我在网上搜索过,但没有找到任何可以帮助我的东西。有人能告诉我如何执行这项任务吗?

0 投票
1 回答
251 浏览

c# - 后期绑定中的参数类型

我已经到了最后一步,我需要调用我正确创建的"PasteAndFormat"方法objContentLateBinded,但现在我需要将“WdRecoveryType.wdFormatOriginalFormatting”值作为参数传递。WdRecoveryType 是后期绑定程序集的一部分"Microsoft.Office.Interop.Word",那么如何在我的代码中使用它来代替-parameters-?

这是有问题的行:

0 投票
4 回答
2900 浏览

c# - (Automatic) Dependency Injection Binding Mechanisms

The two common mechanisms for creating dependency injection bindings, such as through an IOC container, is from an XML configuration or a block of imperative code. In these cases, the key value pair is explicit (i.e. key = requested type, value = returned type).

Still, there is a third "heuristic" approach where an application/IOC container is given only [IMyClass] keys and the container then reflects over a set of application assembly dependencies to find all name-matched concrete classes [MyClass]. Said differently, the "return type" values are discovered rather than declared.

What I'd like to know is twofold:

  1. Which IOC containers (or other late-binding tools) permit the heuristic approach? Does this approach have a more common name?
  2. Are there other binding techniques, besides the three I've listed, which are used in practice?
0 投票
2 回答
301 浏览

java - 静态后期绑定是否需要重载静态变量?

我的一个朋友问我他​​是否可以在 Java 中覆盖一个静态变量,我很震惊他竟然想到了这种奇怪的编码方式。然后他向我解释说这在 PHP 中是可能的,我想知道优秀的开发人员是否有充分的理由这样做。在我看来,静态成员被描述为类成员,与对象无关,因此它们与类的派生无关,但我无法说服他,因为他是如此天真和固执。

谁能给出一个很好的论据来反对这整件事,或者让我相信这是一个很酷的功能?

0 投票
2 回答
1916 浏览

vb6 - 如何使用来自后期绑定 COM 对象的事件?

我有一个后期绑定的 COM 对象 ( My.COMInterface),它在完成处理后引发一个事件。如何从 VB6 代码中使用该事件?

如果我是早期绑定,我会将我的 COM 对象声明为 WithEvents,并编写一个普通的事件处理程序。如何使用后期绑定来实现这一点?

当前代码:

我目前知道的唯一方法是编写一个 C/C++ 桥来处理事件,如本 MSDN 文章中所述。我希望有一个更简单的方法!

0 投票
1 回答
1062 浏览

c# - 后期将 C++ DLL 绑定到 C# - 函数始终返回 true

我有一个 DLL,它的 h 文件中有这个:

在c文件中:

在 c# 中,我有以下代码:

出于某种奇怪的原因,无论 C++ 中的返回值是什么,connect 函数总是返回 true。我尝试在 C# 中将调用约定更改为 StdCall,但问题仍然存在。

有任何想法吗?

0 投票
2 回答
323 浏览

c# - C 到 C# 回调在一段时间后引发异常

我有一个我找不到的棘手错误。我正在从 C# 到我编写的本机 DLL 进行后期绑定。后期绑定似乎工作正常。添加回调后,问题就开始了。

回调是这样定义的(在 c 中)(在 DLL 中的全局范围内):

这个函数被导出:

这是本机功能实现:

在托管方面,该函数在此处调用:

奇怪的是 - 它工作了一段时间。一段时间后我得到一个“特权指令”异常,但是当我降低 STATUS_DELAY 时,它发生的更少。异常出现在 IsEventSignaled 函数中 - 但那里什么也没有。

下载线程同步到 c# GUI 线程以更新 GUI。

我在这个问题上已经有太多时间了。它看起来像一个经典的调用约定问题,但我彻底验证了它!

有任何想法吗?

0 投票
1 回答
270 浏览

c# - 私有成员的后期绑定调用引发 MethodAccessException

我有一个烦人的情况,即使我完全信任地运行代码,方法的后期绑定调用也会引发 MethodAccessException。情况如下:

我有一个基类,它按照约定映射一些事件处理逻辑,这些处理程序使用通过发出 IL 代码创建的动态方法调用,遵循本教程: http: //www.codeproject.com/KB/cs/dynamicmethoddelegates.aspx

为什么我不能用动态方法调用私有成员?