Skip to content

Instantly share code, notes, and snippets.

@CoreyKaylor
Last active December 13, 2015 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CoreyKaylor/4969356 to your computer and use it in GitHub Desktop.
Save CoreyKaylor/4969356 to your computer and use it in GitHub Desktop.
Feature toggle boilerplate
public class FeaturesActivator : IActivator
{
private readonly FeatureSettings _featureSettings;
private readonly ContentExtensionGraph _extensionGraph;
public FeaturesActivator(FeatureSettings featureSettings, ContentExtensionGraph extensionGraph)
{
_featureSettings = featureSettings;
_extensionGraph = extensionGraph;
}
public void Activate(IEnumerable<IPackageInfo> packages, IPackageLog log)
{
if (_featureSettings.SpecialFeatureEnabled)
{
_extensionGraph.Register("feature-area", new LambdaExtension<HomeModel>(page => page.Partial<SpecialFeatureInput>()));
}
if (_featureSettings.SomeOtherFeatureEnabled)
{
_extensionGraph.Register("feature-area", new LambdaExtension<HomeModel>(page => new HtmlTag("h3").Text("HtmlTag Toggle On!")));
}
}
}
public class FeatureSettings
{
public bool SpecialFeatureEnabled { get; set; }
public bool SomeOtherFeatureEnabled { get; set; }
}
public class FeatureToggleFubuRegistry : FubuRegistry
{
public FeatureToggleFubuRegistry()
{
Services(x =>
{
x.AddService(new ContentExtensionGraph());
x.FillType<IActivator, FeaturesActivator>();
});
}
}
@model FeatureToggleSample.SpecialFeatureModel
<div>
<h2>@Model.SpecialMessage</h2>
</div>
public class SpecialFeatureEndpoint
{
public SpecialFeatureModel get_feature(SpecialFeatureInput input)
{
return new SpecialFeatureModel {SpecialMessage = "Feature Toggle On!"};
}
}
public class SpecialFeatureInput
{
}
public class SpecialFeatureModel
{
public string SpecialMessage { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment