如何将方法作为另一个方法的参数传递

JSP*_*JSP 0 c#

我需要在"父"对象中检查是否可以在某个时刻接受在"子"中调用某些方法.例如,父对象(组件)包括子对象(或者换句话说是组件),而父对象现在正在处理,因此必须禁止所有(或特定的)子活动(即启动新的服务线程,将新的客户端请求排入队列,... ).

public class Parent
{
    public bool IsMethodCallAcceptable(reference_to_method) {...}
}

public class Child
{
    public int SomeMethod(int intArg, string stringArg)
    {
        if(!_parent.IsMethodCallAcceptable(reference_to_SomeMethod_with_actual_args))
            throw new ...
        ...
    }

    private void AnotherMethod(string param = null) {...}
    {
        if(!_parent.IsMethodCallAcceptable(reference_to_AnotherMethod_with_actual_args))
            throw new ...
        ...
    }

    private Guid ThirdMethod()
    {
        if(!_parent.IsMethodCallAcceptable(reference_to_ThirdMethod))
            throw new ...
        ...            
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

jmo*_*eno 7

注意:我正在回答你的问题,而不是你的头衔.其他人已经回答了这个标题

某些对象具有isDisposed属性,如果您的父实现了该属性,并且这是您不想调用方法的唯一时间,则为yes.否则没有.如果您控制父项的源,您可以添加一个符合您需要的属性.

如果您不控制源并且您想要检查多于isDisposed或者父级未实现isDisposed,您可能能够检查公开的属性,但通常您应该假设如果方法向公众公开,可以随时调用它.如果你通过反思调用私人方法,那么你就是冒险.

编辑以回应评论: 鉴于您的描述,代表不会通过向父母添加属性和方法来为您提供任何额外的功能(如果您不控制源,他们将无法帮助您所有).处理您描述的场景的最佳方法(CAR.ENGINE.START在没有气体时,是为了使Start方法抛出异常或返回值指示尝试启动引擎的结果).