当前位置: 首页 > 工具软件 > CodeGenerator > 使用案例 >

V.CodeGenerator WPF代码生成器--IoC容器

吕志诚
2023-12-01


# 前言

前言:
WTM 的影响,想自己尝试写一个自动生成WPF项目的代码生成器
本文主要用于介绍基础库中作者自定义的一些<基础服务>的使用。
作者的功底还不是很成熟,请大家多多包涵。


一、引用Vampirewal.Core基础库

详细Nuget引用请点击此处跳转到主介绍页面

二、使用

本基础库使用的IoC容器为自己写的,VampirewalIoC

1、特性介绍

通过使用特性标记,可实现类似MEF容器插件化开发的效果,需在配置文件中,配置好DLL路径,框架会在启动的时候加载对应DLL

1.1、注册特性:VampirewalIoCRegisterAttribute

1.1.1、使用

    [VampirewalIoCRegister("MainWindow1", RegisterType.Window)]//此处为注册 窗体
    public partial class MainWindow1 : MainWindowBase
    {
    
    }

    [VampirewalIoCRegister("MainViewModel2", RegisterType.ViewModel)] //此处为注册ViewModel
    public class MainViewModel2 : BillVM<TestBillModel>
    {
    
    }

    

1.2、获取实例特性:VampirewalIoCGetInstanceAttribute

1.2.1、使用

    [VampirewalIoCRegister("MainWindow1", RegisterType.Window)]//此处为注册 窗体
    public partial class MainWindow1 : MainWindowBase
    {
    
        [VampirewalIoCGetInstance("MainViewModel2")]//通过在token获取实例
        public override ViewModelBase DataSource 
        {
            get
            {
                return base.DataSource;
            }
            set
            {
                base.DataSource = value;
                //DataContext = value;
            }
        }
    }

2、常规使用

2.1、注册:除了服务外,其他的注册建议都通过特性

//此处为注册服务,需在ViewModelLocator中使用
VampirewalIoC.GetInstance().RegisterService<IAppConfig, VampirewalConfig>();
//注册ViewModel
VampirewalIoC.GetInstance().Register<MainViewModel2>("MainViewModel2", RegisterType.ViewModel);
//注册泛型工厂类
VampirewalIoC.GetInstance().RegisterService(typeof(SqlSugarRepository<>), RegisterType.Factory);

2.2、获取实例

VampirewalIoC.GetInstance().GetInstance<FrameworkElement>("aaView")
VampirewalIoC.GetInstance().GetInstance<MainViewModel2>();
 类似资料: