我需要能够将我的类(或基类)的方法传递给基类方法(因为它必须在那里做更多的东西)。
我知道以下可能性:在我的基类中,我使用方法public void Call(Action action)
,只需调用action()
并执行其他操作。
但是我想要更严格一些,因为现在我可以把所有东西放在这个方法中,例如Call(() => string.Format("Some {0}, "text));
但我只想允许自有类型或基类型的方法。
我想像public void Call(Expression<Func<MyClassType, Action>> expressionToAction)
之类的东西,但我在这里没有得到正确的观点。
这甚至可能吗?使用表达式-param我得到的错误是该方法必须返回Action
,这完全不是我想要的。
答案 0 :(得分:1)
在编译时,您无法实现“此类的唯一方法”。没有任何限制可以让你在泛型和非泛型类型上做到这一点。
如果运行时检查已足够 - 传递表达式(使用Action
而非Func
- Expression<Action<T>
)并检查表达式的正文Get the name of a method using an expression。