通过表达式将方法作为参数传递
本文关键字:参数传递 方法 表达式 | 更新日期: 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>
)并检查表达式的主体,类似于使用表达式获取方法的名称