通过表达式将方法作为参数传递

本文关键字:参数传递 方法 表达式 | 更新日期: 2023-09-27 18:03:13

我需要有能力将我的类(或基类)的方法传递给基类方法(因为它必须在那里做一些更多的事情)。

我知道以下可能性:在我的基类中,我有方法public void Call(Action action),它将简单地调用action()并做其他事情。

但是我不想有更多的限制,因为现在我可以把所有的东西都放在这个方法中,例如Call(() => string.Format("Some {0}, "text));,但是我只想允许自己的类型或基本类型的方法。

我想的是public void Call(Expression<Func<MyClassType, Action>> expressionToAction)之类的东西,但我在这里没有得到正确的点。

这可能吗?使用表达式参数,我得到错误,该方法必须返回Action,这完全不是我想要的。

通过表达式将方法作为参数传递

不能在编译时实现"仅属于该类的方法"。没有限制允许你在泛型和非泛型类型上这样做。

如果运行时检查足够-传递表达式(使用Action而不是Func - Expression<Action<T>)并检查表达式的主体,类似于使用表达式获取方法的名称