C# 6 Advanced Development

Contact Us for Dates
4 days practical workshop for up to 12 people.

Only £1580 per person

Contact us for Onsite Price

Once you've mastered the core features of C# as a programming language, you're ready to take the next step. The .NET Framework offers an incredibly rich and diverse set of APIs that cover all aspects of contemporary development. This course takes a detailed look at the areas of C# and .NET that have particular resonance to developers today, including asynchrony, creating decoupled and adaptable systems, and test-driven development.


This course is a mixture of lectures and hands on exercises designed to reinforce the topics learnt

Training Course Objectives

  • Asynchronous programming techniques
  • Parallelization and concurrency
  • Debugging multithreaded code
  • Reflection and metadata
  • Using CodeDom and dynamic code
  • Dynamic programming
  • Dependency injection
  • Test-driven development

Training Course Prerequisites

  • At least 6 months C# programming experience


Chapter 1 Asynchronous Programming

  • Creating tasks
  • Designing task-based APIs
  • Continuations
  • Nested tasks

Chapter 2 Managing Tasks

  • Quick recap of async and await
  • A closer look at the Task class
  • Working with TaskCompletionSource
  • Task scheduling

Chapter 3 Parallel Programming

  • Task-based and data-based parallelism
  • Using the Parallel class
  • Using PLINQ
  • TPL DataFlow

Chapter 4 Debugging Multithreaded Code

  • Types of bugs
  • Visual Studio debugging techniques
  • Going beyond Visual Studio

Chapter 5 Reflection and Metadata

  • Metadata storage
  • Loading assemblies
  • Examining types using reflection
  • Creating instances using reflection
  • Late binding
  • Assembly metadata
  • Defining and accessing custom attributes

Chapter 6 Integrating with Unmanaged Code

  • The dynamic keyword
  • Using The Dynamic Language Runtime

Chapter 7 CodeDom and Dynamic Code

  • Overview of CodeDom
  • Compiling code
  • Using interfaces effectively
  • Using reflection effectively
  • Using Reflection Emit
  • Creating dynamic methods
  • Working with builder classes

Chapter 8 Dependency Injection

  • DI concepts
  • Tools for implementing DI
  • Overview of Unity
  • Resolving dependencies
  • Designing for DI

Chapter 9 Test-Driven Development

  • TDD concepts
  • Tooling for TDD in .NET
  • Creating unit tests
  • Mocking
  • Coverage
  • Following a TDD approach to development