摘要: 实例化带参数类 如果一个类,在初始化时需要带一个参数,则在注册时使用AddScoped、AddTransient、AddSingleton的回调函数。 services.AddScoped<IConfigService>(s=>new TxtConfigServer() { FileName = " 阅读全文
posted @ 2023-11-27 18:17 Simian_2018_12_22 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 使用类:Environment 使用方法:GetEnvironmentVariable 示例: public string GetValue(string name) { return Environment.GetEnvironmentVariable(name); } 阅读全文
posted @ 2023-11-27 17:50 Simian_2018_12_22 阅读(39) 评论(0) 推荐(0) 编辑
摘要: .net 依赖注入使用的是构造函数注入方式,并且具有传染性。 比如有一个控制器中使用了日志和存储两个类,而存储中使用了日志类和配置类,则都只需要在其构造函数中写需要的类,然后在容器中注册,就可以直接使用。 日志类代码 // 日志接口 public interface ILog { public vo 阅读全文
posted @ 2023-11-27 17:02 Simian_2018_12_22 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 实现了IDisposable接口的类会在离开using时自动调用Dispose方法 public class DisposeClass : IDisposable { public string Name { get; set; } public void Dispose() { this.Name 阅读全文
posted @ 2023-11-27 16:56 Simian_2018_12_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 引言 控制反转(IoC)实现方法: (隐式)依赖注入:需要什么服务(类),直接在类里面写,然后系统在创建类的时候给服务(类)自动赋值。 (显式)服务定位器:需要什么服务(类)在给服务定位器要什么服务(类) 1. 初始化使用 引用包:Microsoft.Extensions.DependencyInj 阅读全文
posted @ 2023-11-27 16:53 Simian_2018_12_22 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 1. 自定义Where方法 static void MM(string[] args) { IEnumerable<int> ints = new int[] { 1, 2, 4, 63, 12, 34, 46, 12, 45, 12456 }; // 使用LINQ中的Where方法 //IEnum 阅读全文
posted @ 2023-11-26 18:18 Simian_2018_12_22 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 委托可以演变为匿名方法,然后由匿名方法演变成为Lambda。 static void MM(string[] args) { // 无参数无返回值的匿名方法 Action a1 = delegate () { Console.WriteLine("这是一个匿名方法"); }; a1(); // 有参 阅读全文
posted @ 2023-11-26 17:59 Simian_2018_12_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 如果有多个Task任务,如果需要等待所有任务执行完成使用:WaitAll或WhenAll 如果只需要等待其中一个执行完成则使用WaitAny或WhenAny When表示有返回值 Wait表示无返回值 static async Task Main(string[] args) { Console.W 阅读全文
posted @ 2023-11-26 10:50 Simian_2018_12_22 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 使用yield能将返回值一个一个返回回去,然后接收的地方先进行处理,处理完,等下一个返回值回来后再处理下一个。 static void Main(string[] args) { foreach (var arg in GetStrings()) { Console.WriteLine(arg); 阅读全文
posted @ 2023-11-26 10:12 Simian_2018_12_22 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 原文链接:C# 使用Task执行异步操作 - Ryan_zheng - 博客园 (cnblogs.com) 为什么要使用 Task 线程是创建并发的底层工具,因此具有一定的局限性。 没有简单的方法可以从联合(Join)线程得到“返回值”。因此必须创建一些共享域。当抛出一个异常时,捕捉和处理异常也是麻 阅读全文
posted @ 2023-11-26 10:03 Simian_2018_12_22 阅读(89) 评论(0) 推荐(0) 编辑