Dependency Inversion Principle
public interface IReader
{
public string Read();
}
public class FileReader:IReader
{
public string Read()
{
return "Data Read from file";
}
}
//business logic depends on abstraction IReader
public class DataProcessor
{
private readonly IReader _reader
//constructor injection
public DataProcessor(IReader reader)
{
_reader=reader;
}
public void ProcessData()
{
string data= _reader.Read();
[Link](" Data read :"+data);
}
}
public class Driver
{
public static void Main(string[]args)
{
// initialising the file reader
IReader reader = new FileReader();
DataProcessor dp = new DataProcessor(reader);
[Link]();