首页 > 其他分享 >手动依赖注入

手动依赖注入

时间:2024-09-01 17:47:20浏览次数:10  
标签:依赖 Demo 手动 用户 Entity new DemoNormal public 注入

# DemoNormal\Demo.DI\Demo.DI.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Demo.Entity\Demo.Entity.csproj" />
    <ProjectReference Include="..\Demo.Service\Demo.Service.csproj" />
  </ItemGroup>
</Project>

DemoNormal\Demo.DI\Program.cs


using Demo.Entity;
using Demo.Service;

//用户信息
var user = new User() { Id = 1, Name = "admin", RoleName = "管理员" };

//新增用户
var userService = new UserService();

userService.AddUser(user);

Console.WriteLine("新增成功!");


//更新用户
userService.UpdateUserRoleName(1, "客服");
Console.WriteLine("更新成功!");

DemoNormal\Demo.Entity\Demo.Entity.csproj


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

DemoNormal\Demo.Entity\User.cs


namespace Demo.Entity
{
    /// <summary>
    /// 用户
    /// </summary>
    public class User
    {
        /// <summary>
        /// 用户Id
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 用户名
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 角色名
        /// </summary>
        public string RoleName { get; set; }
    }
}

DemoNormal\Demo.Entity\UserChangeLog.cs


namespace Demo.Entity
{
    /// <summary>
    /// 用户变动日志
    /// </summary>
    public class UserChangeLog
    {
        /// <summary>
        /// Id
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 用户Id
        /// </summary>
        public long UserId { get; set; }

        /// <summary>
        /// 旧角色名称
        /// </summary>
        public string OldRoleName { get; set; }

        /// <summary>
        /// 新角色名称
        /// </summary>
        public string NewRoleName { get; set; }
    }
}

DemoNormal\Demo.Repository\Demo.Repository.csproj


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Demo.Entity\Demo.Entity.csproj" />
  </ItemGroup>

</Project>

DemoNormal\Demo.Repository\UserChangeLogRepository.cs


using Demo.Entity;

namespace Demo.Repository
{
    /// <summary>
    /// 用户变动日志仓储
    /// </summary>
    public class UserChangeLogRepository
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public UserChangeLogRepository()
        {

        }

        /// <summary>
        /// 新增日志
        /// </summary>
        /// <param name="userChangeLog"></param>
        /// <returns></returns>
        public UserChangeLog AddUserChangeLog(UserChangeLog userChangeLog)
        {
            return userChangeLog;
        }
    }
}

DemoNormal\Demo.Repository\UserRepository.cs


using Demo.Entity;

namespace Demo.Repository
{
    /// <summary>
    /// 用户仓储
    /// </summary>
    public class UserRepository
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public UserRepository()
        {

        }

        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public User AddUser(User user)
        {
            return user;
        }


        /// <summary>
        /// 获取用户
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public User GetUser(long Id)
        {
            return new User() { Id = 1, Name = "admin", RoleName = "管理员" };
        }

        /// <summary>
        /// 更新用户角色
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="newRoleName"></param>
        public User UpdateUserRoleName(long userId, string newRoleName)
        {
            return new User() { Id = userId, Name = "admin", RoleName = newRoleName };
        }

    }
}

DemoNormal\Demo.Service\Demo.Service.csproj


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Demo.Entity\Demo.Entity.csproj" />
    <ProjectReference Include="..\Demo.Repository\Demo.Repository.csproj" />
  </ItemGroup>

</Project>

DemoNormal\Demo.Service\UserChangeLogService.cs


using Demo.Entity;
using Demo.Repository;

namespace Demo.Service
{
    /// <summary>
    /// 用户变动日志
    /// </summary>
    public class UserChangeLogService
    {
        /// <summary>
        /// 用户变动日志仓储
        /// </summary>
        private UserChangeLogRepository _userChangeLogRepository;

        /// <summary>
        /// 用户仓储
        /// </summary>
        private UserRepository _userRepository;

        /// <summary>
        /// 构造函数
        /// </summary>
        public UserChangeLogService()
        {
            _userRepository = new UserRepository();
            _userChangeLogRepository = new UserChangeLogRepository();
        }

        /// <summary>
        /// 新增日志
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="newRoleName"></param>
        /// <returns></returns>
        public UserChangeLog AddUserChangeLog(long userId, string newRoleName)
        {
            //获取用户
            var user = _userRepository.GetUser(userId);

            //变动信息
            var userChangeLog = new UserChangeLog()
            {
                UserId = userId,
                OldRoleName = user.RoleName,
                NewRoleName = newRoleName
            };

            //插入日志
            return _userChangeLogRepository.AddUserChangeLog(userChangeLog);
        }
    }
}

DemoNormal\Demo.Service\UserService.cs


using Demo.Entity;
using Demo.Repository;

namespace Demo.Service
{
    /// <summary>
    /// 用户业务
    /// </summary>
    public class UserService
    {
        /// <summary>
        /// 用户仓储
        /// </summary>
        private UserRepository _userRepository;

        /// <summary>
        /// 用户日志
        /// </summary>
        private UserChangeLogService _userChangeLogService;

        /// <summary>
        /// 构造函数
        /// </summary>
        public UserService()
        {
            _userRepository = new UserRepository();
            _userChangeLogService = new UserChangeLogService();
        }

        /// <summary>
        /// 新增用户
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public User AddUser(User user)
        {
            //参数校验
            if (user == null)
            {
                throw new ArgumentNullException("用户对象不可为空!");
            }
            if (string.IsNullOrEmpty(user.Name))
            {
                throw new ArgumentNullException("用户名不可为空!");
            }

            //Todo: 业务逻辑

            //保存至数据库,
            return _userRepository.AddUser(user);
        }

        /// <summary>
        /// 更新用户角色
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="newRoleName"></param>
        public void UpdateUserRoleName(long userId, string newRoleName)
        {
            //更新角色
            _userRepository.UpdateUserRoleName(userId, newRoleName);

            //新增日志
            _userChangeLogService.AddUserChangeLog(userId, newRoleName);
        }
    }
}

标签:依赖,Demo,手动,用户,Entity,new,DemoNormal,public,注入
From: https://www.cnblogs.com/zhuoss/p/18391510

相关文章

  • [20240829]关于依赖链3.txt
    [20240829]关于依赖链3.txt--//如果修改表结构或者改名,相关的sql语句在共享池会失效,必须重新分析,我开始学习orcle时候,一直认为这些相关信息保存在表对象--//句柄的堆0里面,如果涉及到的sql语句很多,这样堆0应该很大,而实际上的情况上堆0一直没有变化.我曾经问过别人这个问题,......
  • [20240829]关于依赖链.txt
    [20240829]关于依赖链.txt--//如果修改表结构或者改名,相关的sql语句在共享池会失效,必须重新分析,我开始学习orcle时候,一直认为这些相关信息保存在表对象--//句柄的堆0里面,如果涉及到的sql语句很多,这样堆0应该很大,而实际上的情况上堆0一直没有变化.我曾经问过别人这个问题,最......
  • Blazor基础学习填坑系列-02-添加依赖包
    继续学习官方给出的demo,参照示例代码,添加包引用时卡住了,官方给出的包的版本6.0.X明显跟当前用的不一致 心想,就别在终端中敲指令了,干脆手动添加吧,结果找不到入口,摸索了下,终于找到:依赖项-包,右键-管理NuGet程序包 根据依赖包名搜索,安装,版本号会自动带出,代码会自动补全......
  • DLL 动态注入---ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称-
    DLL动态注入—ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—exe程序DLL动态注入—ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—exe程序文章目录DLL动态注入---ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入......
  • 20240901_113224 python 环境依赖的备份与导入
    20240830_173845python当前环境依赖包导出到文件中_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1187710920240830_183845python从依赖包记录文件中批量安装包_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/11877185......
  • SQL注入总结
    一、万能密码:什么是万能密码?用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。用户登录时,后台执行的数据库查询操作(SQL语句)是:【Selectuser_id,user_type,emailFromusersWhereuser_id=’用户名’Andpassword=’密码’】这里我们......
  • 【SQL注入】代码安全审计经验分享
    一、MyBatis框架中的注入漏洞Mybatis框架支持的CURD功能可以直接搜索XML文件中的${和${}拼接的SQL语句,如果SQL的参数可控,就可能造成注入风险。另外,有的SQL语句使用的是注解开发,把SQL语句可以直接写在了代理接口方法上方,审计的时候可以将两种情况都注意一下,或许有不同的发现。......
  • Go实战全家桶之一:goconfig依赖注入扩展之自动注入配置项、工业级巨匠
    开源地址:goconfig:gitclonehttps://gitee.com/ichub/go.git基础结构packageichubconfigimport("gitee.com/ichub/goconfig/common/base/basedto""gitee.com/ichub/goconfig/common/base/baseutils/reflectutils""github.com/gogf/......
  • SQL注入
    SQL注入(SQLInjection)是一种网络攻击技术,攻击者通过在输入字段中注入恶意的SQL代码,使得应用程序执行非预期的SQL查询,进而绕过身份验证、读取、修改甚至删除数据库中的数据。SQL注入是由不安全的SQL查询引起的,通常是因为应用程序直接将用户输入拼接到SQL查询中,而没有对输入进行充分......
  • 了解依赖反转原则(DIP)、控制反转(IoC)、依赖注入(DI)及 IoC容器
    这篇文章将描述DIP、IoC、DI和IoC容器。大多数情况下,初学者开发人员会遇到DIP、IoC、DI和IoC容器的问题。他们混淆在一起,发现很难辨别他们之间的区别,不知道为什么他们需要使用他们。另一方面,很多人使用DI,IoC却不知道它能解决什么问题。关于这个话题有很多帖子......