gpt4 book ai didi

c# - 获取尚未实例化的类的函数句柄

转载 作者:行者123 更新时间:2023-12-03 20:30:27 25 4
gpt4 key购买 nike

我对 C# 相当陌生。

我想做的事情可能看起来很复杂。首先,我想获取一些函数的句柄以便稍后执行它们。我知道我可以通过以下方式实现这一目标:

List<Action> list = new List<Action>();
list.Add( () => instanceA.MethodX(paramM) );
list.Add( () => instanceA.MethodY(paramN, ...) );

for(Action a in list) {
a();
}

但是,如果instanceA对象还不存在,但我知道当我调用相应的函数时它会存在怎么办? MethodX 和 MethodY 位于我不应该修改的外部库上。

-为什么:想想这种情况:A 类有 100 个方法,每个方法根据 A 类状态返回不同的 float 。然而,根据其他一些状态,我们可能只想访问前 5 个方法,或者只访问第一个和第四个方法。此方法适用的类状态可能会随着时间的推移而改变。我的想法是拥有一个包含所有 100 个方法的大列表,然后通过使用与该方法相对应的索引,创建一个仅包含适当方法的子列表 LL(例如,[1,2,3,4,5] 或 [ 1,4])。然后,一旦创建了对象 A,我将依次运行子列表 LL 中的所有不同方法,以某种方式因为它们是由对象 A 调用的。

知道如何实现这一目标吗?

最佳答案

您可以使用List<Action<YourClass>> ,然后添加:

lst.Add(x => x.Method1());
lst.Add(x => x.Method2());

然后当你想执行你在实例中传递的方法时:

lst[0](theInstance);

关于c# - 获取尚未实例化的类的函数句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116771/

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