Search
Duplicate

public virtual event ~ 를 조심하자

작성일
2022/07/07 08:15
분류
C#
public class Test { [Test] public void TestMethod() { var x = new TestChild(); x.TestAction += () => Debug.Log("Hello"); // This will register TestChild.TestAction x.RaiseFromChild(); // Hello x.RaiseFromParent(); // TestParent.TestAction ignored! } } public class TestParent { public virtual event Action TestAction; // Not registered! public void RaiseFromParent() { TestAction?.Invoke(); } } public class TestChild : TestParent { public override event Action TestAction; public void RaiseFromChild() { TestAction?.Invoke(); } }
C#
복사
참고
기본 클래스에서 가상 이벤트를 선언하지 말고 파생 클래스에서 재정의합니다. C# 컴파일러는 이러한 이벤트를 올바르게 처리하지 않으며, 파생 이벤트의 구독자가 실제로 기본 클래스 이벤트를 구독할지 여부를 예측할 수 없습니다.