找到 2628 篇文章 关于 C#
110 次查看
我们正在创建 Employee 类的两个实例,e 和 e1。e 被赋值给 e1。这两个对象指向相同的引用,因此对于所有 Equals,我们都将获得 true 作为预期输出。在第二种情况下,我们可以观察到,即使属性值相同。Equals 返回 false。从本质上讲,当参数引用不同的对象时。Equals 不会检查值,并且始终返回 false。示例 1类 Program{ static void Main(string[] args){ Employee e = new Employee(); e.Name = "Test"; e.Age = 27; ... 阅读更多
3K+ 次查看
Take 运算符用于从数组中返回给定数量的元素,而 Skip 运算符跳过数组中指定的数量的元素。Skip 从序列中的第一个元素开始,跳过直到指定位置的元素。Take 从序列中的第一个元素开始,获取直到指定位置的元素。示例 1类 Program{ static void Main(string[] args){ List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 5, 6, 7, ... 阅读更多
996 次查看
浅拷贝 - 对象的浅拷贝复制“主”对象,但不复制内部对象。“内部对象”在原始对象及其副本之间共享。浅拷贝的问题在于这两个对象不是独立的。如果修改一个对象,则更改将反映在另一个对象中。深拷贝 - 深拷贝是对象的完全独立副本。如果我们复制了我们的对象,我们将复制整个对象结构。如果修改一个对象,则更改将不会反映在另一个对象中。示例类 Program{ static void ... 阅读更多
1K+ 次查看
操作过滤器用于在操作方法执行之前或之后添加额外的逻辑。OnActionExecuting 和 OnActionExecuted 方法用于在执行操作方法之前和之后添加我们的逻辑。让我们创建一个实现 ActionFilterAttribute 的 LogAttribute,它在操作方法执行之前和之后记录一些信息。LogAttribute - 示例使用 System; 使用 System.Diagnostics; 使用 System.Web.Http.Controllers; 使用 System.Web.Http.Filters; 命名空间 DemoWebApplication.Controllers{ public class LogAttribute : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext){ Debug.WriteLine(string.Format("操作方法 {0} 在 {1} 执行", actionContext.ActionDescriptor.ActionName, DateTime.Now.ToShortDateString()), ... 阅读更多
249 次查看
媒体类型允许 API 通知客户端如何解释有效负载中的数据。在 HTTP 协议中,媒体类型使用诸如 text/html、application/json 和 application/xml 之类的标识符指定,分别对应于 HTML、JSON 和 XML,这是最常见的 Web 格式。还有其他更特定于 API 的媒体类型,例如 application/vnd.api+json。以下是需要在媒体类型中发送的版本。application/vnd.demo.students.v1+json StudentsV1Controller application/vnd.demo.students.v2+json StudentsV2Controller添加我们自己的 CustomControllerSelector 将解决上述错误。CustomControllerSelector - 示例使用 System.Linq; 使用 System.Net.Http; 使用 System.Text.RegularExpressions; 使用 System.Web.Http; 使用 System.Web.Http.Controllers; 使用 System.Web.Http.Dispatcher; 命名空间 WebAPI.Custom{ public class CustomControllerSelector : DefaultHttpControllerSelector{ ... 阅读更多
536 次查看
Accept 标头告诉服务器浏览器希望以什么文件格式获取数据。这些文件格式更常称为 MIME 类型。MIME 代表多用途互联网邮件扩展。版本控制可以像下面这样在标头中发送。Version=1 StudentsV1Controller Version=2 StudentsV2Controller由于我们没有在 Accept 标头中处理版本,因此我们得到 404 未找到错误,因为我们只有 StudentV1 和 StudentV2 控制器。让我们添加我们自己的 CustomControllerSelector,它实现 DefaultHttpControllerSelector 类。CustomControllerSelector - 示例使用 System.Linq; 使用 System.Net.Http; 使用 System.Web.Http; 使用 System.Web.Http.Controllers; 使用 System.Web.Http.Dispatcher; 命名空间 WebAPI.Custom{ public class CustomControllerSelector : DefaultHttpControllerSelector{ private HttpConfiguration _config; ... 阅读更多
402 次查看
当控制器方法抛出任何未处理的异常(而不是 HttpResponseException 异常)时,会执行异常过滤器。HttpResponseException 类型是一种特殊情况,因为它专门用于返回 HTTP 响应。异常过滤器实现 System.Web.Http.Filters.IExceptionFilter 接口。编写异常过滤器最简单的方法是从 System.Web.Http.Filters.ExceptionFilterAttribute 类派生并覆盖 OnException 方法。下面是一个将 NotFiniteNumberException 异常转换为 HTTP 状态代码 416(请求的范围不满足)的过滤器。ExceptionFilterAttribute - 示例使用 System; 使用 System.Net; 使用 System.Net.Http; 使用 System.Web.Http.Filters; 命名空间 DemoWebApplication.Controllers{ public class ExceptionAttribute : ExceptionFilterAttribute{ public override void OnException(HttpActionExecutedContext ... 阅读更多
361 次查看
web api 中的 DefaultHttpControllerSelector 类负责选择我们在 URI 中发送的适当的控制器操作方法。假设我们必须在查询字符串中实现版本控制,如下所示v=1 StudentsV1Controller(版本 1)v=2 StudentsV2Controller(版本 2)如果我们在查询字符串中传递版本信息,例如 https://127.0.0.1:58174/api/student?v=1 将导致 404 未找到错误响应,因为 DefaultHttpControllerSelector 中存在的 SelectController() 方法将查找 StudentsController,但我们只有 StudentsV1Controller 和 StudentsV2Controller。要处理这种情况,我们应该添加我们自己的 CustomControllerSelector,它实现 DefaultHttpControllerSelector 类。CustomControllerSelector - 示例使用 System.Net.Http; 使用 System.Web; 使用 System.Web.Http; 使用 ... 阅读更多
657 次查看
一旦 Web API 服务公开,不同的客户端应用程序就开始使用我们的 Web API 服务。随着业务的增长和需求的变化,我们可能也必须更改服务,但对服务的更改应以不会破坏任何现有客户端应用程序的方式进行。这就是 Web API 版本控制发挥作用的地方。我们保持现有服务不变,因此我们不会破坏现有客户端应用程序,并开发新客户端应用程序可以开始使用的新版本服务。实现版本控制的选项之一是使用 URI。下面 ... 阅读更多
2K+ 次查看
HTTP 动词构成了我们“统一接口”约束的主要部分,并为我们提供了基于名词的资源的操作对应部分。主要或最常用的 HTTP 动词(或方法,因为它们被正确地称为)是 POST、GET、PUT、PATCH 和 DELETE。这些分别对应于创建、读取、更新和删除(或 CRUD)操作。还有许多其他动词,但使用频率较低。在那些使用频率较低的方法中,OPTIONS 和 HEAD 比其他方法使用得更频繁。操作方法可以命名为 HTTP 动词,如 Get、Post、Put、Patch 或 Delete。但是,我们可以附加任何后缀 ... 阅读更多