获取尚未实例化的 class 函数的句柄
Get the handle of a function of a class that has no instantiation yet
我是 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:想想这种情况:classA有100个方法,每个方法根据classA的状态返回不同的浮点数。然而,根据其他一些状态,我们可能只想访问前 5 个方法,或者只访问第一个和第四个方法。此方法适用的 class 状态可能会随着时间而改变。
我的想法是拥有一个包含所有 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# 的新手。
我想做的事情可能看起来很复杂。 让我们先说我想获取一些函数的句柄以便稍后执行它们。我知道我可以通过以下方式实现这一目标:
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:想想这种情况:classA有100个方法,每个方法根据classA的状态返回不同的浮点数。然而,根据其他一些状态,我们可能只想访问前 5 个方法,或者只访问第一个和第四个方法。此方法适用的 class 状态可能会随着时间而改变。 我的想法是拥有一个包含所有 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);