首页 > Web开发 > 详细

netcore容器与配置文件操作

时间:2019-05-13 15:16:40      阅读:146      评论:0      收藏:0      [点我收藏+]
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;

namespace CoreConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //DI容器测试
            var provider1 = new ServiceCollection()
                .AddOptions()
                .AddTransient<IPerson, Person>()
                .AddTransient<IDog, Dog>()
                .AddTransient<IFly, Fly>()
                .BuildServiceProvider();

            var dog1 = provider1.GetService<IDog>();
            Console.WriteLine(provider1.GetService<IDog>().Name);
            Console.WriteLine(provider1.GetHashCode());

            var provider2 = new ServiceCollection()
                .AddOptions()
                .AddTransient<IPerson, Person>()
                .AddTransient<IDog, Dog>()
                .BuildServiceProvider();
            var dog2 = provider2.GetService<IDog>();
            Console.WriteLine(provider2.GetHashCode());
            
            //配置文件读取测试
            IConfiguration config = new ConfigurationBuilder()
                .SetBasePath(AppContext.BaseDirectory)
                .Add(new JsonConfigurationSource
                {
                    Path = "appsettings.json",
                    Optional = false,
                    ReloadOnChange = true
                }).Build();
            ConfigHelper.config = config;

            var user = ConfigHelper.GetConfig<Usernfo>("User");
            string url = ConfigHelper.GetValue("Url");
            Console.WriteLine($"网址:{url}");
            Console.WriteLine($"用户名:{user.Name},电话:{string.Join("|",user.Phones)}");
            Console.ReadKey();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

namespace CoreConsoleApp1
{
    public class ConfigHelper
    {
        public static IConfiguration config;

        public static string GetValue(string key)
        {
            return config.GetSection(key).Value;
        }

        public static T GetConfig<T>(string key) where T : class, new()
        {
            var data = new ServiceCollection()
                .AddOptions()
                .Configure<T>(config.GetSection(key))
                .BuildServiceProvider()
                .GetService<IOptions<T>>()
                .Value;
            return data;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace CoreConsoleApp1
{
    public interface IPerson
    {
        string Name { get; set; }
    }

    public class Person : IPerson
    {
        public string Name { get; set; }
    }


    public interface IDog
    {
        string Name { get; set; }
    }

    public class Dog : IDog
    {
        private IFly _fly;

        public Dog()
        { }

        public Dog(IFly fly)
        {
            _fly = fly;
        }

        public Dog(string name)
        {
            this.Name = name;
        }
        public string Name { get; set; } = "huahua";
    }


    public interface IFly
    {
        string Fiy();
    }

    public class Fly : IFly
    {
        public string Fiy()
        {
            return "fly....";
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace CoreConsoleApp1
{
    public class Usernfo
    {
        public string Name { get; set; }
        public string[] Phones { get; set; }
    }
}
appsettings.json

{
  "Url": "http://www.test.com",
  "User": {
    "Name": "zhangsan",
    "Phones": [ "138002233", "12866525", "185226365" ]
  }
}

 技术分享图片

netcore容器与配置文件操作

原文:https://www.cnblogs.com/huangzelin/p/10856528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!