Skip to content

Instantly share code, notes, and snippets.

@Flayed
Last active May 2, 2018 16:25
Show Gist options
  • Save Flayed/e8193f995fa8f7e26d1ea7962b357ce4 to your computer and use it in GitHub Desktop.
Save Flayed/e8193f995fa8f7e26d1ea7962b357ce4 to your computer and use it in GitHub Desktop.
Reflection Registration
public class ConfigurationService : IConfigurationService
{
public ConfigurationService(IDataService dataService)
{
_configurationSet = dataService.GetConfigurationSet();
}
public ITriangleConfiguration TriangleConfiguration => _configurationSet.TriangleConfiguration;
public ISquareConfiguration SquareConfiguration => _configurationSet.SquareConfiguration;
public ICircleConfiguration CircleConfiguration => _configurationSet.CircleConfiguration;
private readonly ConfigurationSet _configurationSet;
}
public interface IConfigurationService
{
ITriangleConfiguration TriangleConfiguration { get; }
ISquareConfiguration SquareConfiguration { get; }
ICircleConfiguration CircleConfiguration { get; }
}
var builder = new ContainerBuilder();
builder.Register<ConfigurationService>().AsImplementedInterfaces().SingleInstance();
// Register the configurations from the ConfigurationService as their respective interfaces
foreach (var property in typeof(IConfigurationService).GetProperties())
{
builder
.Register(c => property.GetValue(c.Resolve<IConfigurationService>()))
.As(property.PropertyType);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment