首页
关于
Search
1
免费PHP空间收集
242 阅读
2
[Win]端口转发工具
137 阅读
3
MobaXterm 终端管理
63 阅读
4
Heroku 定时自动启动
60 阅读
5
docker 部署SQL server
33 阅读
默认分类
网络资源
技术分享
我爱学习
JAVA
Golang
Linux
C#
登录
Search
标签搜索
工具
端口转发
PHP空间
虚拟主机
免费
redis
小幻
累计撰写
17
篇文章
累计收到
3
条评论
首页
栏目
默认分类
网络资源
技术分享
我爱学习
JAVA
Golang
Linux
C#
页面
关于
搜索到
4
篇与
的结果
2022-11-04
NET CORE 使用swagger
Swagger根据在代码中使用自定义的注解来生成接口文档,这个在前后端分离的项目中很重要。这样做的好处是 在开发接口时可以通过swagger 将接口文档定义好,同时也方便以后的维护。在没有swagger之前,我们可以使用word,excel等功能来书写接口定义文档,但又有一个弊端,即: 在接口发送改变时需要及时的同步接口文档,否则实际的接口与接口文档不相符,则接口文件就失去了作用,甚至会起到反作用。NET CORE 使用swagger进入使用nuget控制台安装swagger 或者自行nuget搜索Swashbuckle.AspNetCoreNuGet\Install-Package Swashbuckle.AspNetCore -Version 6.4.0注册swagger 服务、修改Startup.cs文件public void ConfigureServices(IServiceCollection services) { //注册 A 服务 //注册 B服务 //注册swagger services.AddSwaggerGen(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { //配置开发模式使用swagger app.UseSwagger(); app.UseSwaggerUI(); } //任意模式都使用swagger app.UseSwagger(); app.UseSwaggerUI(); //其他配置... }打开swagger SWAGGER 常见错误
2022年11月04日
1 阅读
0 评论
0 点赞
2022-10-29
c# 成员修饰符详解
PUBLICpublic 修饰符所修饰的成员不受任何限制在任何程序集、命名空间中都可以使用定义一个类并设置成员为公开在LearnPackge dll中定义一个类并创建一个公开的成员,本在构造方法中访问IsPublicnamespace LearnPackge { public class LearnModifiers { /// <summary> /// 定义一个公开成员 /// </summary> public int IsPublic; public LearnModifiers() { // 构造方法也可以访问IsPublic this.IsPublic = 100; } } }LearnModifiers dll中实例化LearnModifiers类IsPublic 可以访问namespace LearnModifiers { internal class Program { static void Main(string[] args) { ///在LearnModifiers dll 可以访问到ispublic 这个属性 var baseObject = new LearnPackge.LearnModifiers(); baseObject.IsPublic = 10; } } }LearnPackge dll 中创建Test 类也可以访问namespace LearnPackge { public class Test { public Test() { new LearnModifiers().IsPublic = 10; } } }创建一个子类Subclass 继承LearnModifiers 发现也可以访问namespace LearnPackge { public class Subclass:LearnModifiers { public Subclass() { this.IsPublic = 100; } } }结论:public 属性修饰的属性可以在任意地方被访问到private在 LearnModifiers 中定义一个私有成员IsPrivatenamespace LearnPackge { public class LearnModifiers { /// <summary> /// 定义一个私有成员 /// </summary> private int IsPrivate; } }测试在其他程序中是否可以通过实例对象访问namespace LearnModifiers { internal class Program { static void Main(string[] args) { var baseObject = new LearnPackge.LearnModifiers(); //此时已经无法通过baseObject 实例访问 IsPrivate 成员 } } }测试继承是否可以访问namespace LearnPackge { public class Subclass:LearnModifiers { public Subclass() { //此时无法通过 this、base 去访问 IsPrivate 成员 } } }测试自身类是否可以访问namespace LearnPackge { public class LearnModifiers { /// <summary> /// 定义一个私有成员 /// </summary> private int IsPrivate; public LearnModifiers() { //类本身可以访问自己定义的private 修饰的成员 this.IsPrivate = 100; } } } 结论:private 所修饰的成员只有类本身可以访问到protected创建一个protected修饰的成员namespace LearnPackge { public class LearnModifiers { protected int IsProtected; public LearnModifiers() { //构造方法中可以访问 IsProtected this.IsProtected = 0; } } }测试子类是否可以访问namespace LearnPackge { public class Subclass:LearnModifiers { public Subclass() { //可以访问到 this.IsProtected = 10; } } }测试实例对象是否可以访问namespace LearnModifiers { internal class Program { static void Main(string[] args) { var baseObject = new LearnPackge.LearnModifiers(); //IsProtected 成员无法访问到 } } }结论 protected 修饰的成员只能当前类或者他的子类所访问到小问题: protected internal 所修饰的成员可以被那些访问到?internalnamespace LearnPackge { public class LearnModifiers { internal int IsInternal; public LearnModifiers() { //自身可以访问到 this.IsInternal = 0; } } }同一个dll的子类也可以访问到namespace LearnPackge { public class Subclass:LearnModifiers { public Subclass() { this.IsInternal = 10; } } }同一个dll中通过实例对象也可以访问到namespace LearnPackge { public class Test { public Test() { new LearnModifiers().IsInternal = 10 ; } } }不同dll下实例namespace LearnModifiers { internal class Program { static void Main(string[] args) { var baseObject = new LearnPackge.LearnModifiers(); //无法访问到IsInternal } } }不同dll 继承 class test: LearnPackge.LearnModifiers { public test() { //无法访问 IsInternal } }结论:internal 修饰的成员只有当前dll可以访问protected internal使用 protected internal 修饰的成员 可以支持子类使用 但是在其他dll中无法使用实例去访问 这里就不掩饰啦自己写代码体验吧~
2022年10月29日
1 阅读
0 评论
0 点赞
2022-10-12
C# 中的where T : class, new() 到底是什么意思?
介绍在一些代码的仓储层我们经常会看到下面的这段代码,那这段代码是什么意思呢?这里的Where 其实和sql中的 where 是一样的,下面这代码用来约束泛型 T 必须有一个无参构造函数class A<T> where T:new()常见的语法class A<T> where T:class,new() //约束泛型必须是引用类型,必须有一个无参构造 where T: class // T必须是一个类(class)类型,不是结构(structure)类型 where T: new() // T必须要有一个无参构造函数 where T: struct // T必须是一个结构类型 where T: NameOfBaseClass // T必须继承名为NameOfBaseClass的类 where T: NameOfInterface // T必须实现名为NameOfInterface的接口{card-describe title="文章引用"}博客园<薄心之心>:https://www.cnblogs.com/bosins/p/14858258.html{/card-describe}
2022年10月12日
1 阅读
0 评论
0 点赞
2022-10-08
C# 使用MQ消息队列
rabbitmqRabbitMQ是一套跨平台开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。简单使用 生产者代码 static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory(); factory.HostName = "localhost"; factory.UserName = "xhuan"; factory.Password = "test123."; factory.VirtualHost = "learn"; int count = 1; using (IConnection connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("hello", false, false, false, null);//创建一个名称为hello的消息队列 while (true) { string message = "Hello World " + count; //传递的消息内容 var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", "hello", null, body); //开始传递 Console.WriteLine("已发送: {0}", message); count++; System.Threading.Thread.Sleep(1000); } } } }消费者代码 static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory(); factory.HostName = "localhost"; factory.UserName = "xhuan"; factory.Password = "test123."; factory.VirtualHost = "learn"; using (IConnection connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("hello", false, false, false, null); var consumer = new EventingBasicConsumer(channel); channel.BasicConsume("hello", false, consumer); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body.ToArray()); Console.WriteLine("已接收: {0}", message); }; Console.ReadLine(); } } }运行效果图
2022年10月08日
9 阅读
0 评论
0 点赞