No we cannot configure WEB API in web.configure file.Web API supports code based configuration. It cannot be configured in web.config file.We can configure WEB API, to customize the behaviour of Web Api hosting Infrastructure and component such asRoutesFormattersFiltersDependency ResolverMessage HandlersParameterBindingRulesPropertiesServicesRoutes − The public methods of the controller are called action methods or simply actions.When the Web API framework receives a request, it routes the request to an action. To determine which action to invoke, the framework uses a routing tableroutes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );Formatters −ASP.NET Core MVC supports ... Read More
WEB API is a better choice for simpler, light weight services. WEB API can use any text format including XML and is faster than WCF.It works the way HTTP works using standard HTTP verbs like GET, POST, PUT, DELETE for all the crud operation.Complete Support for routingResponse generated in Json and XML format using MediaTypeFormatter.It has the ability to be hosted in IIS as well as self-host outside of IIS.Supports Model binding and Validation.Support for ODATA.Supports stateless transfer of data.Supports Url patterns and Http methods.Note − ODATA (Open Data Protocol )is an open protocol which allows the creation and consumption ... Read More
C# 8.0 introduces async streams, which model a streaming source of data. Data streams often retrieve or generate elements asynchronously.The code that generates the sequence can now use yield return to return elements in a method that was declared with the async modifier.We can consume an async stream using an await foreach loop.This below Syntaxstatic IEnumerable Message(){ yield return "Hello!"; yield return "Hello!"; } Can be replaced by IAsyncEnumerable static async IAsyncEnumerable MessageAsync(){ await Task.Delay(2000); yield return "Hello!"; await Task.Delay(2000); yield return "Hello!"; }Exampleclass Program{ public static async Task Main(){ ... Read More
^ Operator − It is known as the index from the end operator.It returns an index that is relative to the end of the sequence or collection.It is the most compact and easiest way to find the end elements compare to earlier methods.company.listEmployees[^2].Name = "Employee 2 Name Changed using new Syntax";company.listEmployees[^5].Name = "Employee 5 Name Changed using new Syntax";company.listEmployees[^8].Name = "Employee 8 Name Changed using new Syntax";Examplepublic class Employee{ public int EmployeeId { get; set; } public string Name { get; set; } public string Gender { get; set; } } public class Company{ public List ... Read More
The switch expression provides for switch-like semantics in an expression contextswitch is a selection statement that chooses a single switch section to execute from a list of candidates based on a pattern match with the match expression.The switch statement is often used as an alternative to an if-else construct if a single expression is tested against three or more conditions.ExampleNew way of Writing the Switchvar message = c switch{ Fruits.Red => "The Fruits is red", Fruits.Green => "The Fruits is green", Fruits.Blue => "The Fruits is blue" };Example 1class Program{ public enum Fruits { Red, Green, ... Read More
A reference return value allows a method to return a reference to a variable, rather than a value.The caller can then choose to treat the returned variable as if it were returned by value or by reference.The caller can create a new variable that is itself a reference to the returned value, called a ref local.In the below example even though we modify the color it doesn't have any mpact on the original array colorsExampleclass Program{ public static void Main(){ var colors = new[] { "blue", "green", "yellow", "orange", "pink" }; string color ... Read More
Binary Literals −Before C# 7 we were able to assign only decimal and hexadecimal values to a variable.In C# 7.0 binary literal has been introduced and it allows us binary value to the variable.Digit Separator −Digit Separator takes the form of a single underscore (_). This separator can be used within any numeric literal as a means of improving legibility.Example Binary Literals −Exampleclass Program{ public static void Main(){ var bn = 0b1000001; System.Console.WriteLine(bn.GetType()); System.Console.WriteLine(Convert.ToChar(bn)); Console.ReadLine(); } }OutputSystem.Int32 AExample Digit Seperator −Exampleclass Program{ public static void ... Read More
C# 7.0 introduces pattern matching in two cases, the is expression and the switch statement.Patterns test that a value has a certain shape, and can extract information from the value when it has the matching shape.Pattern matching provides more concise syntax for algorithmsYou can perform pattern matching on any data type, even your own, whereas with if/else, you always need primitives to match.Pattern matching can extract values from your expression.Before Pattern Matching −Examplepublic class PI{ public const float Pi = 3.142f; } public class Rectangle : PI{ public double Width { get; set; } public double height ... Read More
Local functions are private methods of a type that are nested in another member. They can only be called from their containing member.Local functions can be declared in and called from −Methods, especially iterator methods and async methodsConstructorsProperty accessorsEvent accessorsAnonymous methodsLambda expressionsFinalizersOther local functionsExample 1class Program{ public static void Main(){ void addTwoNumbers(int a, int b){ System.Console.WriteLine(a + b); } addTwoNumbers(1, 2); Console.ReadLine(); } }Output3Example 2class Program{ public static void Main(){ void addTwoNumbers(int a, int b, out int c){ c = a + b; } addTwoNumbers(1, 2, out int c); System.Console.WriteLine(c); Console.ReadLine(); } }Output3
C# allows to use multiple deconstructor methods in the same program with the same number of out parameters or the same number and type of out parameters in a different order.It's a part of the new tuple syntax - which has nothing to do with the Tuple classes but is taking from functional programming.Deconstruct keyword is used for DeconstructorsExamplepublic class Employee{ public Employee(string employeename, string firstName, string lastName){ Employeename = employeename; FirstName = firstName; LastName = lastName; } public string Employeename { get; } public string FirstName ... Read More