Advanced .NET with C# (Course 303 – 40 Hours)


This course provides in-depth coverage of advanced C# and CLR mechanisms, allowing experienced C# developers harness the full power of the C# language and the CLR.

Course Objectives:

Upon completion students should be able to:

  • Use reflection and metadata
  • Understand and use generic types effectively
  • Manage memory and non-memory resources effectively
  • Understand and use delegates and events
  • Understand serialization mechanisms
  • Understand what are AppDomains and how to use them
  • Understand the connection between AppDomains, processes and threads
  • Build effective multithreading applications
  • Use thread synchronization primitives effectively
  • Use C# 3.0 4.0 and 5.0 new features and enhancements
  • Use Introp techniques between C# and native C++ code
  • Understand the usage of the C++ CLI language

Who Should Attend:

The course is intended for experienced C# developers who want to upgrade their skills and deepen their understanding of the C# language and the .NET platform.


Basic C# knowledge is a must. At least 6 months of .NET development is required.

Course Contents:

Reflection and Code Generation

  • Reflection basics and the Type class
  • Creating instances dynamically
  • Getting and setting data using reflection
  • Creating and using Custom Attributes
  • Code generation basics
  • Using the CodeDOM
  • Using IL Generator


  • The need for generics
  • Writing and using generic types
  • Generic methods, interfaces and delegates
  • Applying constraints
  • Generic collections
  • Other aspects of generic programming
  • Nullable types

Managing Resources

  • Garbage collection and its impacts
  • Finalizers
  • The 'Dispose' pattern
  • The using statement
  • The GCHandle type
  • Weak references
  • Resurrection, generations, large object heap
  • Monitoring garbage collection
  • GC types

Advanced Delegates and Events

  • Working with delegates
  • Creating your own delegate types
  • Events
  • Anonymous delegates
  • Asynchronous invocation patterns
  • Late binding using delegates


  • Serialization Scenarios
  • Serialization Attributes
  • Object Graph
  • Serialization Process
  • Deserialization Example
  • Custom Serialization
  • Other serializers

Processes, AppDomains and Threads

  • Processes
  • Application Domains vs. processes
  • Threads and AppDomains
  • AppDomains and objects
  • Crossing AppDomains
  • Marshalling and serialization


  • Managed vs. Unmanaged threads
  • Thread scheduling
  • Creating and managing threads
  • The Thread class
  • Thread synchronization
  • Synchronization kernel objects
  • Multithreading best practices


  • Parallel vs Asynchronous scenarios
  • From Thread to Task
  • Data parallelism
  • Plinq
  • Anych Await Pattern

Advanced Language Constructs

  • Partial types and partial methods
  • Iterators
  • Expression Trees
  • C# 3.0 basic features
  • Extension methods
  • LINQ


  • Interoperability scenarios
  • Platform Invoke (P/Invoke)
  • Marshalling parameters and types
  • Using COM Components
  • COM Apartments and AppDomains
  • Best practices

Unsafe code and C++/CLI

  • What is unsafe code?
  • The unsafe C# keyword
  • Unsafe code rules
  • What is C++/CLI?
  • C++/CLI basics
  • Interoperability with C++/CLI

Download the PDF
שליחת הודעה
טלפון - 04-8571119
פקס - 04-8570307
דוא"ל -
דוא"ל -
כתובת - דרך בר יהודה 52, נשר
בית עופר - קומה שניינה