Book Image

C# 7 and .NET Core Cookbook - Second Edition

Book Image

C# 7 and .NET Core Cookbook - Second Edition

Overview of this book

C# has recently been open-sourced and C# 7 comes with a host of new features for building powerful, cross-platform applications. This book will be your solution to some common programming problems that you come across with C# and will also help you get started with .NET Core 1.1. Through a recipe-based approach, this book will help you overcome common programming challenges and get your applications ready to face the modern world. We start by running you through new features in C# 7, such as tuples, pattern matching, and so on, giving you hands-on experience with them. Moving forward, you will work with generics and the OOP features in C#. You will then move on to more advanced topics, such as reactive extensions, Regex, code analyzers, and asynchronous programming. This book will also cover new, cross-platform .NET Core 1.1 features and teach you how to utilize .NET Core on macOS. Then, we will explore microservices as well as serverless computing and how these benefit modern developers. Finally, you will learn what you can do with Visual Studio 2017 to put mobile application development across multiple platforms within the reach of any developer.
Table of Contents (17 chapters)

How to make a custom type serializable?

Serialization is the process by which an object's state is transformed into a set of bytes (depending on the serialization type used, it could be XML, binary, JSON), which can then be saved in a stream (think MemoryStream or FileStream) or transmitted via WCF or Web API. Making a custom type serializable means that you can apply serialization to custom types by adding the System.SerializableAttribute. Examples of custom types are as follows:

  • Classes and generic classes
  • Structs
  • Enums

A real-world example of serialization could be to create a recovery mechanism for a specific object. Think of a workflow scenario. At some point in time, the state of the workflow needs to be persisted. You can serialize the state of that object and store this in a database. When the workflow needs to continue at a future point in time, you can read the object from the database and deserialize...