C# .NET Core API Controller以及辅助专案

news/2024/5/19 22:41:23 标签: c#, .netcore, 开发语言

准备工作

  1. Windows 10
  2. Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)
  3. C#
  4. 将方法封装(据说可以提高效率,就像是我们用的dll那种感觉
  5. 新增专案作为我们API的辅助专案(作用类似dll,此处,你也可以在你自己的API专案里建文件夹,但这样据说没有效果,我也不知道是不是真的,只能麻烦点,再新增专案啰)

在你创建一个空白的API专案后,这个专案会自动继承ControllerBase类,补第一个专案的图,因为有时候自己见一个.cs的类,不会自动继承,所以就需要手动添加,不过现在升级了,可以直接建control。
专案取名

  • 在系统里直接建Controller类
    直接建Controller类

新增专案

​ 不想太麻烦的,就自己新建文件夹,自己调用就好,就不用建这么多专案。

​ 在新增专案前,先迁移一下之前的项目。之前是D:\WEB_CODE\RMS\,我在此再建了一层目录,此时,xml文件的路径也需要重新勾选。
迁移专案
​ 给大家看下完整建好后的文件夹

新增IServices专案

新增Services专案

新增Model专案

在这里插入图片描述
在这里插入图片描述

版本冲突

在这里插入图片描述
在这里插入图片描述

专案引用

具体的引用要看你需要用到那个专案,这是你自己设定的联系。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

using Autofac;
using Autofac.Extensions.DependencyInjection;

namespace RMS
{
    public class Startup
    {
        
        // 为ConfigureServices方法添加新的注入,且将返回类型void改为 IServiceProvider 
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        { 
            //使用Autofac實現IOC
            var containerBuilder = new ContainerBuilder();
            //模塊化注入
            containerBuilder.RegisterModule<HelpTool.AutofacModuleRegister>();
            containerBuilder.Populate(services);
            var container = containerBuilder.Build();
            return new AutofacServiceProvider(container);
        }
    }
}
using Autofac;
using System.Linq;
using System.Reflection;

namespace HelpTool
{
    public class AutofacModuleRegister : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        { 
            //動態註入服務
            builder.RegisterAssemblyTypes(Assembly.Load("IServices"), Assembly.Load("Services"))
              .Where(t => t.Name.EndsWith("Service"))//注入cs文件以Service结尾的
              .AsImplementedInterfaces(); 
        }
    }
}

方法调用

https://localhost:44372/api/Talentpool/TestMethod?test=111
会失败,因为_iTalentpoolService是个null

//需要 動態註入服務 ==> 会用到Autofac组件 ===》 Startup.cs里写
builder.RegisterAssemblyTypes(Assembly.Load("IServices"), Assembly.Load("Services"))
    .Where(t => t.Name.EndsWith("Service"))
    .AsImplementedInterfaces();

继承

// 在类上这样写,可以指定方法调用的格式,好像是的吧
[Route("api/[controller]/[action]")]

  • 这样的话,大概的框架就是这样了,但效果是不是会快,我就没实践过了
  • 还有,之所以目录Services和Iservices是有用处的,为了動態註入服務,后面有时间就写。
  • 其实就是想为构造函数传递值,会用到Autofac组件。

http://www.niftyadmin.cn/n/5168665.html

相关文章

LiveMedia视频监控汇聚管理平台方案(三)

上一篇文章中我们介绍了LiveMedia视频监控汇聚管理平台视频接入方案中功能设计的设备接入方法。在这篇文章中我们来介绍下LiveMedia视频监控汇聚管理平台方案中功能设计里的流媒体转发是如何实现的&#xff1f; 图1流媒体转发框架 平台流媒体转发框架如图1流媒体转发框架所示&a…

XML文档的xsl:for-each 循环,指定循环次数

在XSLT中&#xff0c;xsl:for-each通常用于遍历XML文档中的节点集合&#xff0c;它并不直接支持指定循环次数。不过&#xff0c;你可以通过一些技巧实现类似的效果。 version"2.0"版本的 一种方法是利用一个适当长度的序列来模拟指定次数的循环。比如&#xff0c;你…

K8S篇之k8s containerd模式fail to pull image certificate signed by unknown authority

"k8s containerd模式fail to pull image certificate signed by unknown authority"的问题 解决方案&#xff1a;您有两个选择&#xff1a;配置证书或禁用证书验证。 配置证书&#xff1a;您可以为 containerd 配置证书&#xff0c;使其信任由未知机构签名的证书。 具…

探索未来,开启无限可能:打造智慧应用,亚马逊云科技大语言模型助您一臂之力

文章目录 什么是大模型&#xff1f;大模型训练方法亚马逊云科技推出生成式AI新工具 —— aws toolkit使用教程 总结 什么是大模型&#xff1f; 近期&#xff0c;生成式大模型是人工智能领域的研究热点。这些生成式大模型&#xff0c;诸如文心一言、文心一格、ChatGPT、Stable …

Roll:翻滚 Pitch:俯仰 Yaw:偏航

Roll:翻滚 Pitch:俯仰 Yaw:偏航 有时候不知道它到底绕着哪个轴旋转得到的角&#xff0c;一个比较容易的记法是根据字母的排列顺序PRY分别对应XYZ轴进行旋转得到的角&#xff0c;即&#xff1a; Pitch是绕着X轴进行旋转得到的。Roll是绕着Y轴旋转得到的。Yaw是绕着Z轴旋…

PHP的curl会话

介绍: Curl&#xff08;Client for URLs&#xff09;在PHP中是一个强大而灵活的工具&#xff0c;用于进行各种网络请求。PHP中的Curl库允许开发者通过代码模拟HTTP请求、与API交互、进行数据传输等。在这里&#xff0c;我们将详细解析PHP中Curl会话的各个方面&#xff0c;涵盖…

LogBack的日志报错解决办法 org.xml.sax.SAXNotRecognizedException

报错信息如下&#xff1a; 18:00:57,395 |-ERROR in ch.qos.logback.core.joran.event.SaxEventRecorder48aaecc3 - Error during parser creation or parser configuration org.xml.sax.SAXNotRecognizedException: unrecognized feature http://xml.org/sax/features/extern…

【Qt】Qt修改Linux系统时间,C语言修改Linux系统时间

1. shell命令 #设置系统软件时间 date -s "2023-05-20 00:00:00" #查看系统软件时间 date #设置硬件时间RTC0(默认RTC) hwclock -w #获取硬件时间RTC0 hwclock#设置硬件时间RTC1(默认RTC) hwclock -w -f /dev/rtc1 #获取硬件时间RTC1 hwclock -f /dev/rtc1 --show#同…