public class FileReader
{
private string _fileName;
public string FileName
get { return _fileName; }
set { _fileName = value; }
}
public string ReadToEnd()
return File.ReadAllText(_fileName);
<configuration>
<configSections>
<section name="castle"
type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
</configSections>
<castle>
<components>
<component id="reader.file1" type="IoC.Tutorials.Part8.FileReader, IoC.Tutorials.Part8">
<parameters>
<FileName>file1.txt</FileName>
</parameters>
</component>
<component id="reader.file2" type="IoC.Tutorials.Part8.FileReader, IoC.Tutorials.Part8">
<FileName>file2.txt</FileName>
</components>
</castle>
</configuration>
static void Main(string[] args)
WindsorContainer container = new WindsorContainer(new XmlInterpreter());
FileReader defaultReader = container.Resolve<FileReader>();
FileReader file1Reader = container.Resolve<FileReader>("reader.file1");
FileReader file2Reader = container.Resolve<FileReader>("reader.file2");
Console.WriteLine("Default contents: {0}", defaultReader.ReadToEnd());
Console.WriteLine("File1 contents: {0}", file1Reader.ReadToEnd());
Console.WriteLine("File2 contents: {0}", file2Reader.ReadToEnd());
Console.Read();
Uri uri;
// blah blah blah
string key = "messageSender."+ uri.Scheme;
if (container.Kernel.HasComponent(key))
ISender sender = container.Resolve<ISender>(key);
// send the message at this point...
sender.SendMessage("hi there");
else
// no implementation registered...
throw new NotImplementedException("no sender registered for scheme: " + uri.Scheme);