Constructor, bir sınıf new’lendiğinde çalışacak kod bloğudur
Birden fazla constructor yazılabilir (overloading). girilen parametreye göre ilgili constructor çalışır
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Constructors
{
class Program
{
static void Main(string[] args)
{
/*
* Constructor, bir sınıf new'lendiğinde çalışacak kod bloğudur
* Birden fazla constructor yazılabilir (overloading). girilen parametreye göre ilgili constructor çalışır**/
CustomerManager customerManager = new CustomerManager(15);
customerManager.List();
CustomerManager customerManager2 = new CustomerManager();
customerManager2.List();
Product product = new Product { Id = 1, Name = "Laptop" };
Product product2 = new Product(2, "Computer"); //Constructor sayesinde propertyleri parametre şekl isteyebiliriz
//Daha önce interface ile logger örneği yapmıştık burada constructor kullanarak işlemi daha düzenli hale getirdik
EmployeeManager employeeManager = new EmployeeManager(new DatabaseLogger());
employeeManager.Add();
PersonManager personManager = new PersonManager("Product");
personManager.Add();
Console.ReadLine();
}
}
class CustomerManager
{
//ctro tab tab ile constructor oluşturalabilir
//Classımızdan nesne ürettiğimizde constructor çaışacak ve zorunlu parametre isteyecek
private int _count;
public CustomerManager(int count)
{
_count = count;
}
public CustomerManager()
{
}
public void List()
{
Console.WriteLine("Listed {0} items", _count);
}
public void Add()
{
Console.WriteLine("Added!");
}
}
class Product
{
//Constructor1
public Product()
{
}
//Constructor2
private int _id;
private string _name;
public Product(int id, string name)
{
_id = id;
_name = name;
}
public int Id { get; set; }
public string Name { get; set; }
}
//Contructor Injection
interface ILogger
{
void Log();
}
class DatabaseLogger : ILogger
{
public void Log()
{
Console.WriteLine("Logged to Database");
}
}
class FileLogger : ILogger
{
public void Log()
{
Console.WriteLine("Logged to File");
}
}
class EmployeeManager
{
//constructor injection
private ILogger _logger;
public EmployeeManager(ILogger logger)
{
_logger = logger;
}
public void Add()
{
_logger.Log();
Console.WriteLine("Added!");
}
}
//Temel Sınıfın Yapıcı Bloğuna Parametre Yollamak
class BaseClass
{
private string _entity;
public BaseClass(string entity)
{
_entity = entity;
}
public void Message()
{
Console.WriteLine("{0} message",_entity);
}
}
class PersonManager : BaseClass
{
public PersonManager(string entity):base(entity) //PersonManager contructorda aldığı parametreyi BaseClass'a yolluyor
{
}
public void Add()
{
Console.WriteLine("Added!");
Message();
}
}
}

Yorum bırakın