Generic Constraint Sample in C#

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. namespace Generic  
  6. {  
  7.    class Program  
  8.    {  
  9.       static void Main(string[] args)  
  10.       {  
  11.          Employees<HR> HREmployees = new Employees<HR>();  
  12.          HREmployees.Add(new HR { Name = "HREmployee1" });  
  13.          HREmployees.Add(new HR { Name = "HREmployee2" });  
  14.          HREmployees.Add(new HR { Name = "HREmployee3" });  
  15.          HREmployees.Add(new HR { Name = "HREmployee4" });  
  16.          HREmployees.Add(new HR { Name = "HREmployee5" });  
  17.          Employees<Developer> DevEmployees = new Employees<Developer>();  
  18.          DevEmployees.Add(new Developer { dName = "DevEmployee1",platform="Dotnet" });  
  19.          DevEmployees.Add(new Developer { dName = "DevEmployee2",platform="Java"});  
  20.          DevEmployees.Add(new Developer { dName = "DevEmployee3",platform="Android"});  
  21.          DevEmployees.Add(new Developer { dName = "DevEmployee4",platform="IOS"});  
  22.          DevEmployees.Add(new Developer { dName = "DevEmployee5",platform="Database"});  
  23.          Console.WriteLine("********************************");  
  24.          Console.WriteLine(HREmployees.GetFirst().Name);  
  25.          Console.WriteLine(DevEmployees.GetFirst().dName);  
  26.          Console.WriteLine(DevEmployees.GetFirst().platform);  
  27.       }  
  28.    }  
  29.    public class Employees<T> where T : class  
  30.    {  
  31.       List<T> employees = new List<T>();  
  32.       public void Add(T item)  
  33.       {  
  34.          if (!employees.Contains(item))  
  35.          employees.Add(item);  
  36.       }  
  37.       public T GetFirst()  
  38.       {  
  39.          return (employees.Count > 0) ? employees[employees.Count-1] : null;  
  40.       }  
  41.    }  
  42.    public class HR  
  43.    {  
  44.       public string Name { getset; }  
  45.    }  
  46.    public class Developer  
  47.    {  
  48.       public string dName { getset; }  
  49.       public string platform { getset; }  
  50.    }  
  51. }