Files
gpd-924-en/SOLID/Assets/Scripts/Delegates.cs
T
david a4f498a33d add unity project
add SOLID examples
2025-04-09 07:49:12 +02:00

43 lines
1.3 KiB
C#

namespace DefaultNamespace
{
public class BaseClass {}
public class ChildClass : BaseClass {}
public delegate void CoVarianceHandler(ChildClass args);
public delegate BaseClass ContraVarianceHandler();
public class Delegates
{
public event CoVarianceHandler CoVariance;
public event ContraVarianceHandler ContraVariance;
public void OnBaseClass(BaseClass args) {}
public void OnChildClass(ChildClass args) {}
public BaseClass OnReturnBaseClass()
{
return new BaseClass();
}
public ChildClass OnReturnChildClass()
{
return new ChildClass();
}
public void Init()
{
CoVariance += OnBaseClass;
CoVariance += OnChildClass;
CoVariance?.Invoke(new ChildClass());
// CoVariance?.Invoke(new BaseClass()); // is not working, because delegate expect an instance of ChildClass
ContraVariance += OnReturnBaseClass;
ContraVariance += OnReturnChildClass;
BaseClass baseClass = ContraVariance?.Invoke();
// ChildClass childClass = ContraVariance?.Invoke(); // is not working, because delegate returns only an instance of BaseClass
}
}
}