我对 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类状态返回不同的浮点数。然而,根据其他一些状态,我们可能只想访问前 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)