我需要在"父"对象中检查是否可以在某个时刻接受在"子"中调用某些方法.例如,父对象(组件)包括子对象(或者换句话说是组件),而父对象现在正在处理,因此必须禁止所有(或特定的)子活动(即启动新的服务线程,将新的客户端请求排入队列,... ).
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)
有什么办法吗?
注意:我正在回答你的问题,而不是你的头衔.其他人已经回答了这个标题
某些对象具有isDisposed属性,如果您的父实现了该属性,并且这是您不想调用方法的唯一时间,则为yes.否则没有.如果您控制父项的源,您可以添加一个符合您需要的属性.
如果您不控制源并且您想要检查多于isDisposed或者父级未实现isDisposed,您可能能够检查公开的属性,但通常您应该假设如果方法向公众公开,可以随时调用它.如果你通过反思调用私人方法,那么你就是冒险.
编辑以回应评论: 鉴于您的描述,代表不会通过向父母添加属性和方法来为您提供任何额外的功能(如果您不控制源,他们将无法帮助您所有).处理您描述的场景的最佳方法(CAR.ENGINE.START在没有气体时,是为了使Start方法抛出异常或返回值指示尝试启动引擎的结果).
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |