大佬教程收集整理的这篇文章主要介绍了C# 一些类名的后缀及其意义,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
C# 中有常见的以以下名称为后缀的类型,笔者总结了一下大概用途。
如下面的示例实现了拓展函数,就是我们平时使用的 app.UseAuthentication();
。
public static class AuthAppBuilderExtensions
{
public static IApplicationBuilder UseAuthentication(this IApplicationBuilder app)
{
if (app == null)
{
throw new ArgumentNullException(nameof(app));
}
return app.UseMiddleware<AuthenticationMiddleware>();
}
}
指工具类一般没有特殊意义,用于表示此类型用于完成某些辅助操作,例如一些转换、序列化,大多数情况下设置成静态类。
例如 @H_137_31@microsoft.AspNetCore.Cors.Infrastructure 中处理 Uri 的工具类。
internal static class UriHelpers
{
public static bool IsSubdomainOf(Uri subdomain,Uri domain)
{
return subdomain.IsAbsoluteUri
&& domain.IsAbsoluteUri
&& subdomain.scheR_666_11845@e == domain.scheR_666_11845@e
&& subdomain.Port == domain.Port
&& subdomain.Host.EndsWith($".{domain.Host}",StringComparison.ordinal);
}
}
代表方案、种类或处理方式,一般使用在枚举或者指明是某种类型下使用,大多属于常量。
例如 ASP.NET Core 中,原来配置 Jwt 认证的代码如下
services.AddAuthentication(options=>
{
options.DefaultAuthenticatescheR_666_11845@e = JwtBearerDefaults.AuthenticationscheR_666_11845@e;
options.DefaultChALLENgescheR_666_11845@e = JwtBearerDefaults.AuthenticationscheR_666_11845@e;
})
// Cookie CookieAuthenticationDefaults.AuthenticationscheR_666_11845@e
此种类型的设计模式称为建造者模式,一般用于函数式编程链式调用生成某个类型。
作用是将构建一个复杂的对象的过程抽象出来,使用不同的过程构建对象的不同部件。
例如 StringBuilder 就是用于构建字符串的。另外 ASP.NET Core 中,IHost 的构建过程如下。
public static void Main(String[] args)
{
ConsoleToke();
var host = CreateHostBuilder(args).build();
host.Run();
}
public static IHostBuilder CreateHostBuilder(String[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
上下文,http请求上下文,访问上下文,线程上下文等。
例如 EFCore 中的 DbContext
,http 请求中的 httpContext
,多线程中的 CurrentContext
。
工厂模式, 作用是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
例如 ASP.NET Core 的注入服务中
private static serviceProvider serviceProvider;
public void Configureservices(IserviceCollection services)
{
services.AddSingleton<IhttpContextAccessor,httpContextAccessor>();
// ...
// ...
serviceProvider = services.buildserviceProvider();
}
// 获取任意实现了 Tinterface 接口的实例
public Tinterface GetAnyInterface<Tinterface>()
{
return serviceProvider.Getservice<Tinterface>();
}
public static Func<T> CreateFactory<T>(Type implementation)
{
return ((IActivator<T>)Activator.CreateInstance(typeof(AlgorithmActivatorCore<>).MakeGenericType(implementation))).Creator;
}
提供者模式,微软发明~
这个我找了很久,在维基百科找到资料 https://en.wikipedia.org/wiki/Provider_model。
提供者模式的设计和规范,可以参考微软文档 https://docs.microsoft.com/en-us/previous-versions/dotnet/articles/ms972319(v=msdn.10)?redirectedfrom=MSDN
这里有练习实践教程 https://www.c-sharpcorner.com/uploadfile/webmaster3/provider-design-patterns-in-Asp-Net-2-0/
https://www.codemag.com/Article/0711081/The-Provider-Model
原来当某种配置的模型类型。
例如 ASP.NET Core 中,记录 jwt 认证配置的类型。
public class JwtBearerOptions : AuthenticationscheR_666_11845@eOptions
{
public bool requirehttpsMetadata { get; set; } = true;
public String MetadataAddress { get; set; }
public String Authority { get; set; }
public String Audience { get; set; }
... ...
}
public static class JwtBearerDefaults
{
public const String AuthenticationscheR_666_11845@e = "Bearer";
}
以上是大佬教程为你收集整理的C# 一些类名的后缀及其意义全部内容,希望文章能够帮你解决C# 一些类名的后缀及其意义所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。