C# C方法作为参数

C# C方法作为参数,c#,C#,有没有一种方法可以在事先不知道方法的情况下将方法作为参数传递 可以在不知道方法的参数/返回类型的情况下调用Func吗?听起来,通过反射调用方法是您感兴趣的 请参阅。最接近的方法是使用委托-调用者需要选择正确的委托类型。这正是Control.Invoke使用委托而不是特定委托类型的原因 或者,正如HackedByChinese所建议的,还有MethodInfo。你应该使用哪一个取决于你想要达到的目标——每一个都在不同的环境中有用。如果您试图描述一种方法,那么MethodInfo可能是最好的方法。如

有没有一种方法可以在事先不知道方法的情况下将方法作为参数传递


可以在不知道方法的参数/返回类型的情况下调用Func吗?

听起来,通过反射调用方法是您感兴趣的


请参阅。

最接近的方法是使用委托-调用者需要选择正确的委托类型。这正是Control.Invoke使用委托而不是特定委托类型的原因

或者,正如HackedByChinese所建议的,还有MethodInfo。你应该使用哪一个取决于你想要达到的目标——每一个都在不同的环境中有用。如果您试图描述一种方法,那么MethodInfo可能是最好的方法。如果您试图表示某种类型的可调用操作,它可以接受参数并具有返回值,那么委托可能更有用


如果您能告诉我们更多您想要实现的目标,我们可能会为您提供更多帮助。

您需要使用一名代表来完成此任务。 Stackoverflow上有几根柱子覆盖了这一点


我建议,特别是Jon Skeet的回答看来你可能在这里设计过度了。。您应该正确地查看代码中周围的基础结构,并尝试重构它

但是如果你真的需要,你可以用泛型来做。现在,我不建议这样做-但是这个函数你可以用任何东西调用,你必须定义Y和T以及调用时间

    public virtual Y MyWrapperFunction<T,Y>(Func<T,Y> func, T param)
    {
        return func(param);
    }

但是要注意,泛型会给你带来各种各样的问题

感谢您的回复。基本上,我正在尝试将一个方法传递到使用EnterpriseLibrary5异常处理的异常处理程序包装器中。我试图将任何方法传递给它,现在必须创建尽可能多的方法,只需使用一个。