using System.Threading.Tasks;
using System.Collections.Generic;
public static void Main()
ExicuteBusinessLogic.Run();
public delegate void SimapleDelegate();
public class SimapleDelegateClass
SimapleDelegate del = new SimapleDelegate(PrintMessage);
public static void PrintMessage()
Console.WriteLine($"Hello World");
public delegate decimal EmployeeDelegate(decimal x, decimal y);
List<Employee> emplist = new List<Employee>()
new Employee(){Id=1, EmpType=1, Name="Orbit Rover", Salary =85000},
new Employee(){Id=2, EmpType=2, Name="Nion Tesla", Salary =95000},
new Employee(){Id=3, EmpType=3, Name="Bekky Backer", Salary =55000},
GetEmployeeBonus(emplist, CalculateBonus);
public static decimal CalculateBonus(decimal per, decimal salary)
return salary * per / 100;
public static void GetEmployeeBonus(List<Employee> emplist, EmployeeDelegate _bonus)
foreach(var emp in emplist)
bonus = _bonus(10, emp.Salary);
Console.WriteLine($"Id: {emp.Id}, EmpType: Permanent, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}");
bonus = _bonus(5, emp.Salary);
Console.WriteLine($"Id: {emp.Id}, EmpType: Contract, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}");
Console.WriteLine($"Id: {emp.Id}, EmpType: Temporary, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}");
public int Id {get; set;}
public int EmpType {get; set;}
public string Name {get; set;}
public decimal Salary {get; set;}
public delegate decimal Employee2Delegate(decimal x, decimal y);
List<Employee> emplist = new List<Employee>()
new Employee(){Id=1, EmpType=1, Name="Orbit Rover", Salary =85000},
new Employee(){Id=2, EmpType=2, Name="Nion Tesla", Salary =95000},
new Employee(){Id=3, EmpType=3, Name="Bekky Backer", Salary =55000},
GetEmployeeBonus(emplist, CalculateBonus, CalculateMonthalySalary);
public static decimal CalculateBonus(decimal per, decimal salary)
return salary * per / 100;
public static decimal CalculateMonthalySalary(decimal months, decimal salary)
public static void GetEmployeeBonus(List<Employee> emplist, Employee2Delegate _bonus, Employee2Delegate _monthalySalary)
foreach(var emp in emplist)
bonus = _bonus(10, emp.Salary);
monthalySalary = _monthalySalary(12, emp.Salary);
Console.WriteLine($"Id: {emp.Id}, EmpType: Permanent, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}, Monthaly Salary {monthalySalary.ToString("#.##")}");
bonus = _bonus(5, emp.Salary);
monthalySalary = _monthalySalary(9, emp.Salary);
Console.WriteLine($"Id: {emp.Id}, EmpType: Contract, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}, Monthaly Salary {monthalySalary.ToString("#.##")}");
monthalySalary = _monthalySalary(6, emp.Salary);
Console.WriteLine($"Id: {emp.Id}, EmpType: Temporary, Name: {emp.Name}, Salary: {emp.Salary}, Bonus: {bonus}, Monthaly Salary {monthalySalary.ToString("#.##")}");
public int Id {get; set;}
public int EmpType {get; set;}
public string Name {get; set;}
public decimal Salary {get; set;}
public delegate void Operation();
public class ExicuteBusinessLogic
Console.WriteLine($"Step 1");
BusinessLogic _business = new BusinessLogic();
_business.getSomeDataFromAccess();
public class BusinessLogic : BaseBusiness
DataAccessLogic _access = new DataAccessLogic();
public int getSomeDataFromAccess()
Console.WriteLine($"Step 2");
result = _access.GetSomeData();
public class BaseBusiness
protected Operation _operation;
public bool Start(bool isTransactionRequired)
Console.WriteLine($"Step 3");
this.ExecuteOperation(isTransactionRequired);
Console.WriteLine($"Exception: {ex.Message}" );
public virtual void ExecuteOperation(bool isTransactionRequired)
Console.WriteLine($"Step 4");
Console.WriteLine($"Exception: {ex.Message} ");
public class DataAccessLogic
private readonly string _connectionstring;
_connectionstring = "Your Connection String";
Console.WriteLine($"Step 5");
ExicuteHelper.ExicuteReader();
public class ExicuteHelper
public static void ExicuteReader()
Console.WriteLine($"Step 6");
Console.WriteLine("Method Executed Successfully");