问题标签 [delegates]

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 回答
1530 浏览

vb.net - 如何在 VB.NET 中动态调用委托链

有人知道是否可以动态创建调用链并调用它?

假设我有两个 A 类和 B 类:

我希望能够同时获取Func ()Name()的MethodInfo并动态调用它们,以便我可以获得类似于A.Func().Name()的调用。

我知道我可以使用Delegate.CreateDelegate创建可以从两个MethodInfo对象调用的委托,但这样我只能分别调用这两个函数,而不是作为调用链的一部分。

我想要两个使用表达式树的 .NET 3.5 解决方案,如果可能的话,还有一个与 .NET 2.0 兼容的解决方案

0 投票
2 回答
306 浏览

c# - C# 相当于 C++ mem_fun?

我想在 C# 中执行以下操作:

在 C++ 中,我会使用 std::mem_fun 之类的东西。我将如何在 C# 中做到这一点?

0 投票
4 回答
2309 浏览

java - 使用子类化替换没有实现接口的 Java 类

例如,java.io.File 只是一个具体的类。我的替代品支持解析 Windows 快捷方式。我需要预处理构造函数参数以解析可能的 .lnk 文件,因为无法访问在抽象路径上执行规范化/规范化/解析的 FileSystem 对象。预处理的需要排除了纯子类化 - 在调用 super(...) 之前不能进行预处理,并且 File 是不可变的。所以我扩展了 File 并使用了一个委托,覆盖了 File 的所有构造函数和方法(在所有构造函数中调用 super(""))。

这很好用,但显然并不理想——如果 File 发生变化,我将不会覆盖任何新方法或构造函数,这将暴露底层的空抽象路径名。我错过了一些明显的东西吗?似乎应该有一个更简单/更好的方法。

0 投票
4 回答
20249 浏览

c# - 在方法中创建委托类型

为了创建匿名方法,我想在 C# 中的方法内创建一个委托类型。

例如:

不幸的是,我不能使用 .NET 2.0 和 C# 2.0 来做到这一点。

0 投票
6 回答
2639 浏览

c# - C# 事件/订阅 .... 监听未引用的项目

我正在开发一个尝试使用观察者模式的应用程序。基本上我有一个基本表单,可以从中加载各种组件(表单)。

基本形式引用每个组件,并且一些组件相互引用。

如果我希望其中一个组件监听由基本表单引发的事件(可能来自菜单等),我似乎无法在不需要在组件中添加对基本表单的引用的情况下实现这一点。这会导致“循环引用”。

是否可以收听/订阅未引用项目中的事件?

0 投票
1 回答
1211 浏览

generics - 为什么 C# 可以做到这一点而 C++/CLI 不能?

.NET Framework 3.5 附带所有 LINQ 好东西,还包括预定义的通用 Func 和 Action 委托。它们对于最多 4 个参数是通用的。我正在编写一个 C++/CLI 项目,该项目(不幸的是)使用 VS 2005,并且必须只依赖于标准的 2.0 程序集集(所以没有 System.Core)。

我尝试定义我自己的通用委托(在我自己的命名空间中),以使未来的端口更容易,通过编译器阻塞(多个定义)。有什么建议么?

0 投票
6 回答
6877 浏览

c# - WebBrowser.Navigated 仅在我 MessageBox.Show() 时触发;

我有一个 WebBrowser 控件,它是从后台 STA 线程动态实例化的,因为父线程是 BackgroundWorker 并且还有很多其他事情要做。

问题是导航事件永远不会触发,除非我在告诉它.Navigate() 的方法中弹出一个MessageBox.Show()。我将解释:

这很好用;但是由于这是一个自动化应用程序,因此消息框会妨碍您。当我删除 MessageBox.Show() 时,WebBrowser.Navigated 事件永远不会触发。我尝试用 Thread.Sleep() 代替这一行,并挂起父线程。

一旦我解决了这个问题,我打算在 WebBrowser 执行其工作时暂停父线程,并找到某种方法将生成的 HTML 传递回父线程,以便它可以继续执行进一步的逻辑。

为什么这样做?我该如何解决?

如果有人可以为我提供一种获取网页内容、填写一些数据并在提交按钮的另一侧返回页面内容的方法,所有这些都针对不支持 POST 动词也不支持的网络服务器通过 QueryString 传递数据,我也会接受这个答案,因为整个练习都是不必要的。


解决方案:在团队架构师的建议下,我最终根本没有使用 BackgroundWorker 和从属线程......虽然以牺牲响应性为代价:(

0 投票
9 回答
122734 浏览

c# - C#中Action委托的使用

我正在与 C# 中的 Action Delegates 一起工作,希望能更多地了解它们并思考它们可能有用的地方。

有没有人使用过 Action Delegate,如果有,为什么?或者你能举一些可能有用的例子吗?

0 投票
3 回答
15821 浏览

c# - 具有不同参数的两个方法的 C# 委托

我正在使用以下方法:

从到目前为止我发现的情况来看,似乎不可能将单个委托用于具有不同签名的两种方法。

有没有其他替代方法可以写这样的东西:

目前我所能想到的就是使用两个代表和一个布尔标志来知道要调用哪个代表,但这不是一个长期的解决方案。

可以将泛型与委托结合起来吗?如果是这样,您是否有任何类型的文档的链接?

环境:C# 2.0

0 投票
2 回答
4109 浏览

asp.net - 动态 asp.net 用户控件中的事件处理

我有一个页面,我想在其中动态添加 asp.net 用户控件。场景是我们希望在控件的特定事件上,它会自行处理并在页面中加载另一个控件。

我无法解决如何做到这一点?

有人有好的想法吗?