随笔分类 - C#/.NET
摘要:了解依赖倒置 想象一个使用服务类的 ProductList 组件,该组件使用 new 运算符创建服务,如清单 5-1 所示。 清单 5-1 使用 ProductsService 的组件 @using Dependency.Inversion.Shared @foreach (var product
阅读全文
摘要:使用模板化组件 组件是 Blazor 的重用构建块。 在 C# 中,泛型被大量用于重用; 想想你在泛型中使用的所有集合,比如 List<T>。 如果 Blazor 有类似通用组件的东西会不会很酷? 是的,Blazor 可以! Blazor 支持模板化组件,您可以在其中指定一个或多个 UI 模板作为参
阅读全文
摘要:什么是 Blazor 组件? 简单来说,Blazor 中的每个 razor 文件都是一个组件。 就是这么简单! Blazor 中的 razor 文件包含标记,并且在 @code 部分中有代码。 我们在 MyFirstBlazor 项目中使用的每个页面都是一个组件! 并且可以通过将其他组件添加为子组件
阅读全文
摘要:快速了解 Razor Blazor 是 Browser + Razor 的组合(具有很大的艺术自由度)。 因此,要了解 Blazor,我们需要了解浏览器和 Razor 语言。 我假设您了解什么是浏览器,因为互联网已经非常流行了几十年。 但是 Razor(作为一种计算机语言)可能还不是那么清楚。 Ra
阅读全文
摘要:您第一个Blazor项目 使用 Dotnet CLI 生成项目 要使用可在任何机器上运行的 dotnet CLI 生成项目,请首先打开命令行,然后将当前目录更改为您要创建项目的任何位置。 现在执行以下命令来创建一个新的 Blazor WebAssembly 项目。 dotnet 是命令行,采用新指令
阅读全文
摘要:Microsoft.Extensions.DependencyInjection DI容器(DI Container) 随着ASP.NET Core的引入,Microsoft引入了自己的DI容器(DI Container)Microsoft.Extensions.DependencyInjectio
阅读全文
摘要:在上一章中,我们介绍了由Nicholas Blumhardt于2007年创建的Autofac DI容器(DI Container)。三年后,Steven创建了Simple Injector,我们将在本章中进行研究。 与上一章中的Autofac一样,我们将给予Simple Injector相同的处理方
阅读全文
摘要:在前面的章节中,我们讨论了总体上适用于DI的模式和原理,但是除了一些示例之外,我们还没有详细研究如何使用任何特定的DI容器(DI Container)应用它们。 在本章中,您将看到这些整体模式如何映射到Autofac。 您需要熟悉上一章中的内容,才能从中充分受益。 Autofac是一个相当全面的DI
阅读全文
摘要:DI容器 本书的先前部分是关于一起定义DI的各种原理和模式的。 如第3章所述,DI容器是一个可选工具,可用于实现许多通用基础结构,如果使用Pure DI,则必须实现这些基础结构。 在整本书中,我们始终将讨论容器保持不可知状态,这意味着我们只教了您Pure DI。 请勿将其解释为Pure DI本身的建
阅读全文
摘要:本章是我们从第10章开始的面向方面编程(AOP)讨论的延续。第10章以最纯粹的形式描述了AOP,即仅使用SOLID设计实践应用AOP,本章从工具着手研究AOP。基础的观点。 我们将讨论两种应用AOP的常用方法:动态拦截和编译时编织。 如果第10章的设计方法过于激进,那么动态拦截将是您的下一个最佳选择
阅读全文
摘要:在家做饭和在专业厨房工作之间有很大的区别。在家里,您可以花所有时间准备菜,但是在商用厨房中,效率是关键。Mise到位是此方面的重要方面。 这不仅仅是提前准备原料;这是关于设置所有必需的设备的信息,包括您的锅,平底锅,砧板,品尝勺以及工作空间中必不可少的任何内容。 厨房的人体工程学和布局也是影响厨房效
阅读全文
摘要:拦截(Interception) 关于烹饪的最有趣的事情之一是,您可以将许多成分组合在一起,而这些成分本身并不是特别美味,它们的总和要大于各个部分的总和。 通常,您会从简单的食材开始,为餐点打下基础,然后对其进行修饰和修饰,直到最终得到美味的菜肴。 考虑小牛肉片。 如果您绝望了,可以生吃,但是在大多
阅读全文
摘要:对象生命周期(Object lifetime) 时间的流逝对大多数食物和饮料都有深远的影响,但后果却各不相同。 就个人而言,我们发现12个月大的Gruyère比6个月大的Gruyère有趣,但Mark希望他的芦笋比任何一种都新鲜。在许多情况下,评估一件物品的适当年龄很容易; 但是在某些情况下,这样做
阅读全文
摘要:Pure DI 在第一章中,我们简要介绍了DI的三个方面:对象组合(Object Composition),生命周期管理(Lifetime Management)和拦截(Interception)。在本书的这一部分,我们将深入探讨这些维度,为每个维度提供各自的章节。许多DI容器(DI Contain
阅读全文
摘要:您可能已经注意到,我(Mark)对酱汁贝纳酱或酱蛋黄酱很着迷。 原因之一是它的味道好极了。另一个是做起来有点棘手。除了生产方面的挑战外,它还带来了一个完全不同的问题:必须立即送达(或者我认为是)。 当客人到达时,这曾经不理想。我不能随便问候我的客人并使他们感到宾至如归,而是疯狂地在厨房里搅打酱汁,让
阅读全文
摘要:在本书的第 1 部分中,您了解了启动和运行 ASP.NET Core 应用程序的基础知识,以及如何使用 MVC 设计模式来创建传统的 Web 应用程序或 Web API。 一旦你开始构建真正的应用程序,你会很快发现你想在部署时调整各种设置,而不必重新编译你的应用程序。 本章介绍如何在 ASP.NET
阅读全文
摘要:依赖注入简介 本节旨在让您基本了解什么是依赖注入,为什么要关注它,以及 ASP.NET Core 如何使用它。 该主题本身远远超出了这一章的范围。 如果您想要更深入的背景,我强烈建议您在线查看 Martin Fowler 的文章。 ASP.NET Core 框架从头开始设计为模块化并遵循“良好”的软
阅读全文
摘要:在前五章中,您已经完成了服务器端渲染的 ASP.NET Core 应用程序的每一层,使用 Razor Pages 将 HTML 渲染到浏览器。 在本章中,您将看到对 ASP.NET Core 应用程序的不同看法。 我们将探索 Web API,而不是使用 Razor Pages,它充当客户端 SPA
阅读全文
摘要:显示动态数据是许多 Web 应用程序的一个重要方面,但它通常只是故事的一半。 除了向用户显示数据之外,您通常还需要用户能够将数据提交回您的应用程序。 例如,您可以使用数据来自定义视图,或者通过将应用程序模型保存到数据库来更新应用程序模型。 对于传统的 Web 应用程序,这些数据通常使用 HTML 表
阅读全文
摘要:Razor 页面中涉及的术语很容易混淆——PageModel、页面处理程序、Razor 视图——尤其是当一些术语描述具体功能,而其他术语描述模式和概念时。 我们在前面的章节中详细讨论了所有这些术语,但重要的是要让它们在你的脑海中直截了当: Razor Pages - Razor Pages 通常是指
阅读全文
