1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-11-05 09:47:18 -05:00
OpenDiablo2/OpenDiablo2.Scenes/AutofacModule.cs

28 lines
961 B
C#
Raw Normal View History

using System.Linq;
using Autofac;
2018-11-22 00:18:42 -05:00
using OpenDiablo2.Common.Attributes;
using OpenDiablo2.Common.Interfaces;
namespace OpenDiablo2.Scenes
{
public sealed class AutofacModule : Module
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
protected override void Load(ContainerBuilder builder)
{
log.Info("Configuring OpenDiablo2.Scenes service implementations.");
var types = ThisAssembly.GetTypes().Where(x => typeof(IScene).IsAssignableFrom(x) && x.IsClass);
foreach (var type in types)
{
2018-12-08 13:31:50 -05:00
var att = type.GetCustomAttributes(true).First(x => (x is SceneAttribute)) as SceneAttribute;
2018-11-22 00:18:42 -05:00
builder
.RegisterType(type)
.Keyed<IScene>(att.SceneType)
2018-12-09 14:55:01 -05:00
.InstancePerDependency();
2018-11-22 00:18:42 -05:00
}
}
}
}