.Net Core 中使用的 ServiceCollectionExtensions 类是什么?

马塞洛

我来自完整的 .net 框架,我开始使用 .Net Core。到目前为止,在我见过的每个项目中,我总是看到一个名为 ServiceCollectionExtensions 的类。但是,当我从头开始创建一个新项目时,该文件不存在。所以我想知道这个类是 .Net Core 结构的一部分还是只是一个约定,它的用途是什么。

克里斯普拉特

它不是 ASP.NET Core 的标准部分,尽管 ASP.NET Core 在ServiceCollection内部为各种事情使用了许多此类扩展类。这个名字也并不神奇。命名扩展类只是惯例[Whatever is being extended]Extensions在这种情况下,ServiceCollection正在扩展,因此类通常命名为ServiceCollectionExtensions不过,您可以调用它FooBarBaz来处理所有重要的事情。

就扩展而言ServiceCollection,一般来说,它只是一种将一组通用功能封装在一个简单方法中的方法,就像任何类的任何扩展一样。例如,您可能有如下字符串扩展名:

public static class StringExtensions
{
    public static int ToInt32(this string s) =>
        int.TryParse(s, out var i) ?  i : 0;
}

然后,不必总是写这个三元,你可以这样做:

myStr.ToIn32();

的扩展名也是如此ServiceCollection例如,该AddDefaultIdentity<TUser>方法实际上是一个扩展,它执行以下操作:

services.AddAuthentication(o =>
{
    o.DefaultScheme = IdentityConstants.ApplicationScheme;
    o.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})
.AddIdentityCookies(o => { });

services.AddIdentityCore<TUser>(o =>
{
   o.Stores.MaxLengthForKeys = 128;
   configureOptions?.Invoke(o);
})
    .AddDefaultUI()
    .AddDefaultTokenProviders();

您可以直接在 中完成所有操作Startup.ConfigureServices,但仅调用services.AddDefaultIdentity<ApplicationUser>()显然要简单得多。

简而言之,如果有大量相关服务注册,您可以创建自己的扩展方法来封装所有这些,然后只需调用您的扩展方法,使您的Startup类更易于阅读和理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 2.1 中使用 .Net Core 2.2 类

来自分类Dev

在ASP.NET Core MVC中使用标签助手的优势是什么

来自分类Dev

ASP.NET Core中使用的lambda配置模式的名称是什么?

来自分类Dev

在ASP Net Core中使用hangfire激活类

来自分类Dev

在.NET Core中使用反射

来自分类Dev

共享ASP.NET Core 3.1启动和控制器中使用的配置对象的最佳方法是什么

来自分类Dev

如何在.net Core中使用RSA

来自分类Dev

在ASP.NET Core中使用MimeMapping

来自分类Dev

在ASP.net Core中使用BeginCollectionItem

来自分类Dev

在.NET Core中使用共享库

来自分类Dev

在ASP.NET Core中使用DirectoryServices

来自分类Dev

在.NET Core中使用SHA-1

来自分类Dev

在 Vs 2015 中使用 .net core 的 CRUD

来自分类Dev

在 .NET Core 2.0 中使用 Omron 库

来自分类Dev

在 .net core 1 中使用会话

来自分类Dev

在针对.NET Core的类库包中使用JsonConvert.DeserializeObject

来自分类Dev

如何在.NET Core类库中使用System.Windows.Forms

来自分类Dev

在ASP.NET Core 3中使用来自单独类的Hub

来自分类Dev

在ASP.NET Core MVC Controller中使用DeleteConfirmed类捕获SqlException 547问题

来自分类Dev

ASP.Net Web Api Core - 无法在抽象基类中使用 CreatedAtRoute

来自分类Dev

如何在asp.net core中使用模型类生成表

来自分类Dev

在类库中使用 asp.net core mvc 的预览版本

来自分类Dev

为什么在ASP.NET Core中使用.Result不会产生死锁?

来自分类Dev

使用asp .net core web api配置react js应用程序的最佳方法是什么

来自分类Dev

是否可以在带有.NET Framework的.NET Core中使用

来自分类Dev

.NET Core和.Net 4.5.2都使用的通用类库

来自分类Dev

.NET Core和.Net 4.5.2都使用的通用类库

来自分类Dev

有什么方法可以在.NET Core 3.1控制台应用程序中使用SignInManager <User> .PasswordSignInAsync?

来自分类Dev

为什么在带有SOS和.Net Core 3.1的Windbg中使用!bpmd无法触发我的断点?

Related 相关文章

  1. 1

    在 2.1 中使用 .Net Core 2.2 类

  2. 2

    在ASP.NET Core MVC中使用标签助手的优势是什么

  3. 3

    ASP.NET Core中使用的lambda配置模式的名称是什么?

  4. 4

    在ASP Net Core中使用hangfire激活类

  5. 5

    在.NET Core中使用反射

  6. 6

    共享ASP.NET Core 3.1启动和控制器中使用的配置对象的最佳方法是什么

  7. 7

    如何在.net Core中使用RSA

  8. 8

    在ASP.NET Core中使用MimeMapping

  9. 9

    在ASP.net Core中使用BeginCollectionItem

  10. 10

    在.NET Core中使用共享库

  11. 11

    在ASP.NET Core中使用DirectoryServices

  12. 12

    在.NET Core中使用SHA-1

  13. 13

    在 Vs 2015 中使用 .net core 的 CRUD

  14. 14

    在 .NET Core 2.0 中使用 Omron 库

  15. 15

    在 .net core 1 中使用会话

  16. 16

    在针对.NET Core的类库包中使用JsonConvert.DeserializeObject

  17. 17

    如何在.NET Core类库中使用System.Windows.Forms

  18. 18

    在ASP.NET Core 3中使用来自单独类的Hub

  19. 19

    在ASP.NET Core MVC Controller中使用DeleteConfirmed类捕获SqlException 547问题

  20. 20

    ASP.Net Web Api Core - 无法在抽象基类中使用 CreatedAtRoute

  21. 21

    如何在asp.net core中使用模型类生成表

  22. 22

    在类库中使用 asp.net core mvc 的预览版本

  23. 23

    为什么在ASP.NET Core中使用.Result不会产生死锁?

  24. 24

    使用asp .net core web api配置react js应用程序的最佳方法是什么

  25. 25

    是否可以在带有.NET Framework的.NET Core中使用

  26. 26

    .NET Core和.Net 4.5.2都使用的通用类库

  27. 27

    .NET Core和.Net 4.5.2都使用的通用类库

  28. 28

    有什么方法可以在.NET Core 3.1控制台应用程序中使用SignInManager <User> .PasswordSignInAsync?

  29. 29

    为什么在带有SOS和.Net Core 3.1的Windbg中使用!bpmd无法触发我的断点?

热门标签

归档