1 Star 0 Fork 0

苦逼的小锅盖 / XiaoYou.Ump.Docs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
启动配置.md 3.55 KB
一键复制 编辑 原始数据 按行查看 历史
苦逼的小锅盖 提交于 2019-12-21 17:03 . 依赖注入

启动配置

在应用启动之前,ump框架提供了模块基本的配置和方法,大家参照下面这个例子就可以了。

配置UMP

配置是通过在自己模块的PreInitialize方法中来实现的(对于module的PreInitialize方法,在上一篇中已经向大家做了简单的说明)代码示例如下:


public class SimpleTaskSystemModule : UmpModule
{
    public override void PreInitialize()
    {
         //设置系统路径
        Configuration.StartupPath = Application.StartupPath;//设置系统工作目录
        Configuration.ConfigPath = System.IO.Directory.GetDirectoryRoot(Application.StartupPath);//设置系统配置存放目录
        Configuration.Name = "UmpTestFreeSqlMudule";//设置系统名称
    }

    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
    }
}

配置模块

和.net框架原生的启动配置相比较,ump有哪些不一样呢?ump框架的模块可以通过IUmpModuleConfigurations接口进行个性化的扩展,这样的话,模块配置更加简单、方便。

示例代码如下:


...
using XiaoYou.Ump.FreeSql.Configuration;
...
public override void PreInitialize() 
{
       //设置FreeSql 模块信息
        Configuration.Modules.UmpFreeSql().AutoSyncStructure = true;
        Configuration.Modules.UmpFreeSql().ConnectionString = $@"Data Source={Configuration.ConfigPath}\database.db;Pooling=true;Max Pool Size=10";
        Configuration.Modules.UmpFreeSql().DataType = DataType.Sqlite;
}
...

在上面这个例子中,我们通过配置XiaoYou.Ump.FreeSql模块,开启了FreeSql 自动同步数据结构的功能,设置了FreeSql 的连接字符串,确定了FreeSql使用的数据库类型是 Sqlite。

为一个模块创建配置

如下代码,假如我们有一个命名为MyModule的模块,并且这各模块有一些自己的配置。那么我们首先要创建一些类,这些类定义为属性,代表了不同的配置。


public interface IMyModuleConfig
{
    bool SampleConfig1 {get;set}

    string SampleConfig2 {get;set;}
}

public class MyModuleConfig:IMyModuleConfig
{
    public bool SampleConfig1 { get; set; }

    public string SampleConfig2 { get; set; }
}

接下来,我们通过依赖注入,注册这个类。IocManager.Register();


public class MyMudule : UmpModule
{
    public override void PreInitialize()
    {
        IocManager.Register<IMyModuleConfig,MyModuleConfig>();
    }
}

最后,我们通过创建一个扩展的方法IModuleConfigurations来得到配置的引用。如下代码:


 public static class MyConfigurationExtensions
    {
        public static IMyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)
        {
            return moduleConfigurations.UmpConfiguration.Get<IMyModuleConfig>();
        }
    }

现在,在其他模块中也可以配置我们自定义的这个MyModule模块了。


Configuration.Modules.MyModule().SampleConfig1 = false; 
Configuration.Modules.MyModule().SampleConfig2 = "test";

如果其它地方需要MyModule的配置,我们可以通过注入IMyModuleConfig 来使用这些值


public class MyService : ITransientDependency
{
    private readonly MyModuleConfig _configuration;

    public MyService(MyModuleConfig configuration)
    {
        _configuration = configuration;
    }
 
    public void DoIt()
    {
        if (_configuration.SampleConfig2 == "test")
        {
            //...
        }
    }
}
C#
1
https://gitee.com/BuddhistMonk/XiaoYou.Ump.Docs.git
git@gitee.com:BuddhistMonk/XiaoYou.Ump.Docs.git
BuddhistMonk
XiaoYou.Ump.Docs
XiaoYou.Ump.Docs
master

搜索帮助