我将动作存储为委托。我也将T存储为接口。
以后有什么方法可以调用Action并传递对象吗?
public class MyAction {
public IMyObject IMyObject { get; set; }
public Delegate myDelegate { get; set; }
public Type IMyObjectType { get; set; }
}
其中IMyObject是一个空接口
public interface IMyObject { }
我从动作回调创建MyAction实例
public static MyAction Factory<T>(Action<T> callback) {
return new MyAction() {
myDelegate = callback, IMyObjectType = typeof (T)
};
}
是否可以调用委托并传递IMyObject?
稍后,我在尝试调用Delegate(Action)之前设置了IMyObject。
最佳答案
如果类型不是固定的(例如:只是Delegate
,而您不知道T
),则可以使用:
action.myDelegate.DynamicInvoke(args);
但这比较慢。如果您要进行大量操作,则应避免这种情况。坦白地说,在整个过程中仅使用
Action<object>
(或类似名称)并在回调中进行强制转换会更有效-然后您的代码将知道委托类型并可以使用常规调用。