2

我对 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 位于我不应该修改的外部库上。

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

关于如何实现这一目标的任何想法?

4

1 回答 1

5

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

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

然后,当您要执行在实例中传递的方法时:

lst[0](theInstance);
于 2016-10-18T19:48:45.783 回答