gpt4 book ai didi

c# - 如果我扩展一个 c# 接口(interface),我可以吃一个电话吗?

转载 作者:太空狗 更新时间:2023-10-30 01:14:56 25 4
gpt4 key购买 nike

在这个问题中我提到了 Unity3D,但通常适用于 c#。

Unity3D 有一个看起来像这样的界面..

public class SomeRobot:MonoBehaviour, IPointerDownHandler
{
public void OnPointerDown(PointerEventData data)
{
Debug.Log("Gets called whenever someone touches the screen...");
}

目前没问题。

我自己制作界面..

public interface IFUHandler:IPointerDownHandler
{
void OnBlah (PointerEventData data);
}

假设我有一个守护进程或任何为接口(interface)的消费者调用 OnBlah 的东西。

public class SomeRobot:MonoBehaviour, IFUHandler
{
public void OnBlah(PointerEventData data)
{
Debug.Log("Gets called when blah happens...");
}

目前没问题。但是

public class SomeRobot:MonoBehaviour, IFUHandler
{
public void OnBlah(PointerEventData data)
{
Debug.Log("Gets called when blah happens...");
}
public void OnPointerDown(PointerEventData data)
{
Debug.Log("this DOES still get called also...");
}

事实上,OnPointerDown 仍然会被调用。这是有道理的。

但是 .... 有没有办法让我的界面吃掉对 OnPointerDown 的调用

所以订阅 IFUHandler 的消费者实际上不会调用 OnPointerDown

(但当然会收到我的 OnBlah 电话。)

或者我只是在忍受“TMIOOK”的想法? (把自己束缚在 OO 结的思考中 :) )

最佳答案

简单的回答:不。

可能的解决方案:

  1. 不要在不需要时继承IPointerDownHandler。如果您不打算使用它,为什么需要此接口(interface)?

  2. 使用非虚方法创建密封抽象类

    public class BaseFUHandler : MonoBehaviour, IFUHandler
    {

    public abstract void OnBlah(PointerEventData data);

    public void OnPointerDown(PointerEventData data)
    {
    //Gets called, but nothing hapends.
    }

关于c# - 如果我扩展一个 c# 接口(interface),我可以吃一个电话吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com