Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save darrencauthon/4259556 to your computer and use it in GitHub Desktop.
Save darrencauthon/4259556 to your computer and use it in GitHub Desktop.
Castle Dictionary Adapter Example
using System;
using System.Configuration;
using Castle.Components.DictionaryAdapter;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using Rhino.Mocks;
namespace CastleDictionaryAdapterExample
{
class Program
{
static void Main()
{
new DictionaryAdapterFactory().GetAdapter<IApplicationConfiguration>(ConfigurationManager.AppSettings);
var container = new UnityContainer(); // or whatever it's called
// no need for this //container.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>();
//ugh
/*
container.Register(
Component.For<IApplicationConfiguration>().UsingFactoryMethod(
() => new DictionaryAdapterFactory().GetAdapter<IApplicationConfiguration>(ConfigurationManager.AppSettings)));
*/
//same thing as above
container.Register<IApplicationConfiguration>(() => new DictionaryAdapterFactory().GetAdapter<IApplicationConfiguration>(ConfigurationManager.AppSettings)));
var configuration = container.Resolve<IApplicationConfiguration>();
Console.WriteLine(configuration.EnableNewsletterSignup);
var stubConfig = MockRepository.GenerateStub<IApplicationConfiguration>();
stubConfig.EnableNewsletterSignup = true;
Console.WriteLine(stubConfig.EnableNewsletterSignup);
Console.ReadLine();
}
}
class NewsletterSignupService
{
public bool Signup(string email)
{
if (!Boolean.Parse(ConfigurationManager.AppSettings["EnableNewsletterSignup"]))
return false;
return true; // technically this would go off to an external web service
}
}
class NewsletterSignupServiceWithoutAppConfigDependency
{
private readonly IApplicationConfiguration _configuration;
public NewsletterSignupServiceWithoutAppConfigDependency(IApplicationConfiguration configuration)
{
_configuration = configuration;
}
public bool Signup(string email)
{
if (!_configuration.EnableNewsletterSignup)
return false;
return true; // technically this would go off to an external web service
}
}
public interface IApplicationConfiguration
{
bool EnableNewsletterSignup { get; set; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment