gpt4 book ai didi

c# - 我可以调用存储为委托(delegate)的 Action

转载 作者:行者123 更新时间:2023-11-30 20:53:37 29 4
gpt4 key购买 nike

我将 Action 存储为 Delegate。我也将 T 存储为一个接口(interface)。

有什么方法可以让我稍后调用 Action 并传递对象?

public class MyAction {
public IMyObject IMyObject { get; set; }
public Delegate myDelegate { get; set; }
public Type IMyObjectType { get; set; }
}

其中 IMyObject 是一个空接口(interface)

public interface IMyObject { }

我从 Action 回调创建 MyAction 实例

public static MyAction Factory<T>(Action<T> callback) {
return new MyAction() {
myDelegate = callback, IMyObjectType = typeof (T)
};
}

是否可以调用委托(delegate)并传递 IMyObject?

稍后我在尝试调用 Delegate(Action) 之前设置了 IMyObject

最佳答案

如果类型不固定(例如:它只是 Delegate ,而您不知道 T ),那么您可以使用:

action.myDelegate.DynamicInvoke(args);

但那是比较慢的。如果你做这么多,你会想避免这种情况。坦率地说,只使用 Action<object> 会更有效率。 (或类似的)贯穿整个过程,并在回调内部 - 然后您的代码将知道委托(delegate)类型并可以使用常规调用。

关于c# - 我可以调用存储为委托(delegate)的 Action<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19833368/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com