netcore-自定義properties數據源

1 新建1.properties文件

port=3306
host=127.0.0.1

2 新建provider類

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    public class PropertiesConfigurationProvider : ConfigurationProvider
    {
        private string path = "";

        public PropertiesConfigurationProvider(string path)
        {
            this.path = path;
        }
        /// <summary>
        /// 用於解析1.properties
        /// </summary>
        public override void Load()
        {
            var lines = System.IO.File.ReadLines(path);
            var dict = new Dictionary<string, string>();
            foreach (var item in lines)
            {
                var items = item.Split("=");
                dict.Add(items[0], items[1]);
            }
            Data = dict;

        }
    }
}

3 新建source類

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    public class PropertiesConfigurationSource : IConfigurationSource
    {
        private string path = "";

        public PropertiesConfigurationSource(string path)
        {
            this.path = path;
        }
        /// <summary>
        /// 生成provider
        /// </summary>
        /// <param name="builder"></param>
        /// <returns></returns>
        public IConfigurationProvider Build(IConfigurationBuilder builder)
        {
            return new PropertiesConfigurationProvider(path);
        }
    }
}

4 新建擴展類

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    public static class PropertiesConfigurationExtensions
    {
        public static IConfigurationBuilder AddPropertiesFile(this IConfigurationBuilder builder,string path)
        {
            builder.Add(new PropertiesConfigurationSource(path));
            return builder;
        }
    }
}

5 調用

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            IConfiguration configuration = new ConfigurationBuilder().AddPropertiesFile("1.properties").Build();

            var info = configuration["host"];
            Console.WriteLine(info);
        }
    }



}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章