示例#1
0
        private static void ConfigureServices(string[] args)
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.Register <ShareConfiguration>((c, p) =>
            {
                var retVal = new ConfigurationBuilder()
                             .SetBasePath(Environment.CurrentDirectory)
                             .AddJsonFile("config.json")
                             .Build()
                             .Get <ShareConfiguration>();

                return(retVal);
            })
            .As <IShareConfiguration>()
            .SingleInstance();

            containerBuilder.Register <TwilioConfig>((c, p) =>
            {
                var config = new ConfigurationBuilder()
                             .AddUserSecrets <TwilioConfig>()
                             .Build();

                var retVal = new TwilioConfig();
                config.GetSection("TwilioConfig").Bind(retVal);

                retVal.Recipients.Add(new PhoneNumber("+1 (650) 868-3367"));

                return(retVal);
            })
            .As <ITwilioConfig>()
            .SingleInstance();

            containerBuilder.RegisterType <J4JSmsLoggerConfiguration>()
            .As <IJ4JSmsLoggerConfiguration>()
            .SingleInstance();

            containerBuilder.Register <ILogger>((c, p) =>
            {
                var appConfig       = c.Resolve <IShareConfiguration>();
                var j4jLoggerConfig = c.Resolve <IJ4JSmsLoggerConfiguration>();

                return(new LoggerConfiguration()
                       .Enrich.FromLogContext()
                       .WriteTo.Console(
                           restrictedToMinimumLevel: appConfig.MinLogLevel
                           )
                       .WriteTo.File(
                           path: J4JLoggingExtensions.DefineLocalAppDataLogPath("log.txt"),
                           restrictedToMinimumLevel: appConfig.MinLogLevel
                           )
                       .WriteTo.TextWriter(
                           textWriter: j4jLoggerConfig.SmsWriter,
                           restrictedToMinimumLevel: appConfig.MinLogLevel
                           )
                       .CreateLogger());
            });

            containerBuilder.RegisterType <J4JTwilio>()
            .As <IJ4JSms>()
            .SingleInstance();

            containerBuilder.RegisterGeneric(typeof(J4JSmsLogger <>))
            .As(typeof(IJ4JSmsLogger <>))
            .As(typeof(IJ4JLogger <>))
            .SingleInstance();

            containerBuilder.RegisterModule <FileHistoryModule>();
            containerBuilder.RegisterModule <FileHistoryShareTargetModule>();

            var container = containerBuilder.Build();

            _svcProvider = new AutofacServiceProvider(container);
        }
        private static AutofacServiceProvider ConfigureContainer()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <J4JLoggerConfiguration>()
            .As <IJ4JLoggerConfiguration>()
            .SingleInstance();

            builder.Register <ILogger>((c, p) => new LoggerConfiguration()
                                       .Enrich.FromLogContext()
                                       .SetMinimumLevel(LogEventLevel.Error)
                                       .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error)
                                       .WriteTo.File(
                                           path: J4JLoggingExtensions.DefineExeLogPath("log.txt"),
                                           restrictedToMinimumLevel: LogEventLevel.Error
                                           )
                                       .CreateLogger())
            .SingleInstance();

            builder.RegisterGeneric(typeof(J4JLogger <>))
            .As(typeof(IJ4JLogger <>))
            .SingleInstance();

            builder.RegisterType <ProjectAssets>()
            .AsSelf();

            builder.RegisterType <TargetInfo>()
            .AsSelf();

            builder.RegisterType <ReferenceInfo>()
            .AsSelf();

            builder.RegisterType <DependencyInfo>()
            .AsSelf();

            builder.RegisterType <RestrictedDependencyInfo>()
            .AsSelf();

            builder.RegisterType <LibraryInfo>()
            .AsSelf();

            builder.RegisterType <ProjectFileDependencyGroup>()
            .AsSelf();

            builder.RegisterType <ProjectInfo>()
            .AsSelf();

            builder.RegisterType <RestoreInfo>()
            .AsSelf();

            builder.RegisterType <FrameworkReferences>()
            .AsSelf();

            builder.RegisterType <WarningProperty>()
            .AsSelf();

            builder.RegisterType <ProjectReference>()
            .AsSelf();

            builder.RegisterType <JsonProjectAssetsConverter>()
            .AsSelf();

            builder.RegisterType <TypedListCreator>()
            .As <ITypedListCreator>();

            return(new AutofacServiceProvider(builder.Build()));
        }