
This video gives glimpse of the overall course.
In this video, we are going to explore Tuples in closer detail.
C# 7.0 introduces an aspect common to functional programming languages with pattern matching. This new kind of construct can test values in different ways. We will look at it now.
In this video we will look at the new changes that improves the readability and flow of the code.
In this video, we will take a look at how the Tuples can be consumed using a deconstruction declaration.
In this video, we will illustrate the use of local functions. Here, we will create a method that calculates the floor space of a building after the common area space has been subtracted from the total floor space.
Passing objects by reference in C# is nothing new. This is done using the ref keyword. In C# 7.0, however, you can now return objects by reference and store these objects in a local variable by reference. We will look at it in this video.
In this video, we will be using the async type Task<T>
Expression-bodied members have been a big hit with the C# developer community. We will now use this feature with – constructors, finalizers, and get and set accessors on properties and indexer. Also, we will look at throw expression.
Once you understand the fundamental definition of an abstract class, when and why to use one becomes obvious. Let’s see what it is.
For many developers, interfaces are equally confusing and their purpose is not clearly understood. Interfaces are actually quite easy to get to grips with once you understand the concept that defines an interface. Let’s do that here!
Generics is a very interesting way of writing code. Instead of specifying the data type of the elements in the code at design time, you can actually delay the specification of those elements until they are used in code. Let’s get started with it then.
Let's assume that we want to find the properties of certain classes in our code, but we can't be sure how many classes we will need to inspect. A generic interface could come in very handy here.
In OOP, inheritance is associated with the beginning of something new and better. Let’s learn how. In this video.
In abstraction, we abstract the common functionality and put it in a single class that will be used to provide this shared functionality to all classes that inherit from it. Let’s see how that works.
A user does not need to know what the inner workings of a class are. Encapsulation takes care of that.
Polymorphism means something has many forms. You can create multiple implementations of an interface.
Single responsibility principle means that a class has a specific task it needs to fulfill and nothing else. In this video, we will learn more about it
When creating classes, we need to ensure that the class prohibits any breaking modifications by needing to change internal code. This is a closed class. If we extend the class and allow it its open class
As a developer, you should know what to tell the users and what information to log. That is called exception handling.
In this video, we will be using regex, to match a valid date.
Sometimes, we need to sanitize input. In this video, we will look at replacing the bad words in a string with asterisks. now!
In this video, we are going to process fresh documents as version one documents.
Being able to ZIP several files and upload a single ZIP file makes more sense than having to upload several smaller files. So, in this video, we will create and extract ZIP files.
Sometimes, you need to perform some in-memory compression of a large amount of text. We will be doing it in this video.
With acync and await, developers can keep their applications fully responsive while performing intensive tasks such as file processing. This makes a perfect candidate for using asynchronous code.
Making a custom type serializable means that you can apply serialization to custom types.
If you want more control over what is serialized, you should implement ISerializable on your object. This gives a developer complete control over what is serialized.
From the name you probably guessed that theXmlSerializer serializes data into XML. It gives you more control over the XML structure of the serialized data. Typical real-world examples for using this serializer would be to maintain compatibility with XML web services. It is also an easy medium to use when transmitting data using some type of message queuing (such as MSMQ or RabbitMQ).
Unlike BinaryFormatter, JSON serialization serializes data in a human-readable format. Using XmlSerializer also produces XML that is human-readable, but JSON serialization produces a smaller data size than XmlSerializer. JSON is primarily used to exchange data and can be used with many different programming languages (as can XML).
In asynchronous programming, the async methods can have three possible return types. We will take a look at each return type in this video.
Task-based Asynchronous Pattern (TAP) is now the recommended method to create asynchronous code. And we will learn to handle them in this video.
Exception handling in asynchronous programming has always been a challenge. This was especially true in the catch blocks. We will look at it now
Well, background threads are identical to foreground threads with the exception that if all foreground threads are terminated, the background threads are stopped too. In this video we will create a simple application that defines the thread created as a background thread.
Popular thinking dictates that the thread pool should be used for brief jobs. This is because the thread pool is limited in size. There are many other processes in the system that will use the thread pool. You, therefore, do not want your application to hog all the threads in the thread pool.
Sometimes, we need to create multiple threads. Before we can continue, however, we need to wait for these threads to complete doing whatever they need to do. For this, the use of tasks is best suited.
There are instances where we want to give sole access to a process to a specific thread. We can do this using the lock keyword. This will, therefore, execute this process in a threadsafe manner
Parallel.Invoke allows us to execute tasks in (you guessed it) parallel. Sometimes, you need to perform operations simultaneously and, in so doing, speed up the processing.
In this video, we will learn how to use a parallel foreach loop and then cancel it.
Sometimes, Parallel foreach loop throws an error. Developers need to take care of that.
Before we can begin exploring Rx, we need to install it and then see how an event works in C#.
Rx allows developers to use the IObservable interface, which represents synchronous datastreams, to write queries using LINQ. In this video, we will be looking at the LINQ functionality of Rx in more detail.
Imagine having to synchronize events across servers in different geographical areas and time zones. Schedulers come in very handy in these situations. So we will use them in this video.
Debugging lambda expressions allows us to check the results of a lambda expression on the fly and modify the expression to test different scenarios. We will create a very basic lambda expression and change it in the Watch window to produce a different value.
In this video, we will take a look at how to create an application on Windows using Visual Studio 2017
Let's take a look at building your first ASP.NET Core app. In this video, we will just create a very basic ASP.NET Core application and briefly discuss the Startup class.
Publishing an ASP.NET Core application is quite straightforward. We will take a look at publishing the application via Command Prompt (run as administrator) and then publishing the ASP.NET Core application to IIS on a Windows server.
This recipe will show you how to set up middleware in your ASP.NET Core application. Middleware in ASP.NET defines how our application responds to any HTTP requests it receives.
Inside the MVC framework, the Controllers, Models, and Views need to work together to form the HTTP request and response cycle. The fundamental starting point, however, is calling the correct Controller based on the HTTP request it receives. Without that, our application built on the MVC framework can't work.
So far we have been using plain C# classes as Controllers, but it is far more common have your Controllers inherit from the Controller base class which the MVC framework provides. This allows developers to return complex objects from their Controllers, students in our case.
C# has recently been open-sourced and brings a host of exciting new features that allows you to write better codes and resolve common programming challenges. This course will equip you with all the new features in a practical approach to solve everyday problems faced by developers.
You will explore the new features of C# and .NET to get started with building the foundation of your application. In this course you will create regular expression, work with Files, Streams, and Serialization, and also handle task and exceptions.
Then you work with MVC, enhance your coding performance and build a responsive and cross platform application from extracting data, search tool, notification panel and finally publish your application live.
About the Author
Dirk Strauss is a software developer and Microsoft .NET MVP from South Africa with over 13 years programming experience. He has extensive experience in SYSPRO Customization (an ERP system), with C# and web development being his main focus. He currently works for Embrace as a Full Stack developer.
He authored the C# Programming Cookbook in 2016 as well as C# 7 and .NET Core 2.0 Blueprints in 2017 (published by Packt). He has also written for Syncfusion, contributing to the Succinctly series of eBooks. He blogs whenever he gets a chance or you can follow him @DirkStrauss on Twitter.