2016-08-21 70 views
2

我需要能够将我的类(或基类)的方法传递给基类方法(因为它必须在那里做更多的东西)。通过表达式传递参数作为参数

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

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

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

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

+0

如何在基类中的简单虚拟方法,由子类型中的具体实现覆盖? – Tomer

+1

'Func '不保证返回的“行动”。你想实现什么目标?如果你提供了一个具体的例子说明为什么你想这样做,也许有一个更好的方法来做到这一点。 – Groo

回答

1

在编译时你无法实现“这个类的唯一方法”。没有任何限制可以让你在通用的非泛型类型上做到这一点。

如果运行时检查是足够 - 通过表达式(使用ActionFunc - Expression<Action<T>)并检查类似于Get the name of a method using an expression表达的身体。