add unity project
add SOLID examples
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user