/*
A Programmer's Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 30 - Execution-Time Code Generation\Loading Assemblies\Making it Dynamic
// copyright 2000 Eric Gunnerson
// file=LogAddInToFile.cs
// compile with: csc /r:..\logdriver.dll /target:library logaddintofile.cs
using System;
using System.Collections;
using System.IO;
public class LogAddInToFile: ILogger
{
StreamWriter streamWriter;
public LogAddInToFile()
{
streamWriter = File.CreateText(@"logger.log");
streamWriter.AutoFlush = true;
}
public void Log(string message)
{
streamWriter.WriteLine(message);
}
}
//=============================================================
// 30 - Execution-Time Code Generation\Loading Assemblies
// copyright 2000 Eric Gunnerson
// file=LogDriver.cs
// compile with: csc /target:library LogDriver.cs
using System;
using System.Collections;
public interface ILogger
{
void Log(string message);
}
public class LogDriver
{
ArrayList loggers = new ArrayList();
public LogDriver()
{
}
public void AddLogger(ILogger logger)
{
loggers.Add(logger);
}
public void Log(string message)
{
foreach (ILogger logger in loggers)
{
logger.Log(message);
}
}
}
public class LogConsole: ILogger
{
public void Log(string message)
{
Console.WriteLine(message);
}
}
|