在这个问题中,我提到Unity3D,但通常在c#中应用。如果我扩展一个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);
}
假设我有一个后台程序或任何能为消费者的接口调用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节想:))
这是一个非常有趣的问题创建一个密封的抽象类。我会试验看看这是否可能。 – Programmer
[PointerEventData](https://docs.unity3d.com/ScriptReference/EventSystems.PointerEventData.html)有[used](https://docs.unity3d.com/ScriptReference/EventSystems.AbstractEventData-used.html)成员。你可以将它设置为“true”来阻止其他任何反应吗? – ChrisF
嗨@ChrisF - 呃..我的意思是,在哪里?! (另外,我想 - 在“一般C#问题”情况下不会真的有帮助......我想。) – Fattie