C# 2014 Master Tech for Experienced C# Developers

Course:  CSH02
Duration:  5 Days
Level:  II
Course Summary

This course is for seasoned .NET developers who are either working on an advanced enterprise application or wanting to improve their coding skills. The contents include generics, lambda expressions, dynamic typing, LINQ, iterator blocks, and many other features. An in depth investigation of what C# can offer beyond the basics is included.

Production considerations including the subtleties of writing maintainable asynchronous code, performance considerations, threading, and all layers included in a typical Enterprise application. The student will learn how to work with high-value features that will be used often. Included are techniques to avoid the hidden pitfalls of C# programming with the help of clear explanations of ?behind the scenes? issues.

This course assumes an understanding of the basics of C#. Agile considerations of test driven development, Design Patterns, when appropriate, and financial applications are included. Hot industry topics include SharePoint and Windows Phone Applications.

« Hide The Details
Topics Covered In This Course

The Changing Face of C# Development

  • Starting with a simple data type
  • Sorting and filtering
  • Handling an absence of data
  • Introducing LINQ
  • COM and dynamic typing
  • Writing asynchronous code without the heartache
  • Dissecting the .NET platform

Core Foundations

  • Delegates
  • Type system characteristics
  • Value types and reference types
  • New features on a solid base
  • Solving the issues of C#

Parameterized Typing with Generics

  • Why generics are necessary
  • Simple generics for everyday use
  • Beyond the basics
  • Advanced generics
  • Limitations of generics in C# and other languages

Fast-Tracked Delegates

  • Saying goodbye to awkward delegate syntax
  • Method group conversions
  • Covariance and contravariance
  • Inline delegate actions with anonymous methods
  • Capturing variables in anonymous methods

Implementing Iterators the Easy Way

  • The pain of handwritten iterators
  • Simple iterators with yield statements
  • Pseudo-synchronous code with the Concurrency and Coordination Runtime

Concluding C#, The Final Features

  • Partial types
  • Static classes
  • Separate getter/setter property access
  • Namespace aliases
  • Pragma directives
  • Fixed-size buffers in unsafe code
  • Exposing internal members to selected assemblies

Cutting Fluff with a Smart Compiler

  • Automatically implemented properties
  • Implicit typing of local variables
  • Simplified initialization
  • mplicitly typed arrays
  • Anonymous types

Lambda Expressions and Expression Trees

  • Lambda expressions as delegates
  • Simple examples using List and events
  • Expression trees
  • Changes to type inference and overload resolution

Extension Methods

  • Extension method syntax
  • Extension methods in .NET
  • Usage ideas and guidelines

Query Expressions and LINQ to Objects

  • Introducing LINQ
  • Simple beginnings: selecting elements
  • Filtering and ordering a sequence
  • Let clauses and transparent identifiers
  • Joins
  • Groupings and continuations
  • Choosing between query expressions and dot notation

LINQ Beyond Collections

  • Querying a database with LINQ to SQL
  • Translations using IQueryable and IQueryProvider
  • LINQ-friendly APIs and LINQ to XML
  • Replacing LINQ to Objects with Parallel LINQ
  • Inverting the query model with LINQ to Rx
  • Extending LINQ to Objects

Mastering Entity Framework

  • An alternative way of querying: Entity SQL
  • Query basics
  • Filtering data
  • Projecting results
  • Grouping data
  • Sorting data
  • Joining data
  • Querying for inheritance
  • Using query-builder methods

Working with Stored Procedures

  • Mapping stored procedures
  • Returning data with stored procedures
  • Embedding functions in the storage model
  • Updating data with stored procedures

Entity Framework and ASP.NET

  • EntityDataSource, a new approach to data binding
  • Using Dynamic Data controls with Entity Framework
  • The ObjectContext lifecycle in ASP.NET
  • Common scenarios involving ASP.NET and Entity Framework

WCF Considerations

  • Service Oriented Architecture
  • WCF Services
  • Fundamental WCF Concepts
  • Creating a New Service from Scratch
  • Generating a Service and Client Proxy
  • Hosting a Service in IIS
  • Exposing Multiple Service Endpoints

Entity Framework and n-Tier Development

  • n-Tier problems and solutions
  • Developing a service using entities as contracts
  • Developing a service using DTOs
  • Developing a service using STEs

Testing Entity Framework

  • Unit tests at a glance
  • Writing a test suite in Visual Studio
  • Isolating dependencies
  • Unit-testing the data access layer
  • Testing the persistence and retrieval of an entity


  • Testing configuration and environment
  • Database-writing comparison
  • Query comparisons in the default environment
  • Optimizing performance

Asynchrony Made Simple

  • Introducing asynchronous functions
  • Thinking about asynchrony
  • Syntax and semantics
  • Asynchronous anonymous functions
  • Implementation details: compiler transformation
  • Using async/await effectively


  • Threads
    • Synchronization
    • Tasks
    • Other Asynchronous Patterns
    • Cancellation
    • Parallelism
  • XAML
    • XAML-Based Frameworks
    • XAML Basics
    • Layout
    • Controls
    • Text
    • Data Binding
    • Graphics
    • Styles
    • Razor
    • Web Forms
    • MVC
    • Routing

Developing SharePoint Web Parts

  • Building Web Parts with Visual Studio
  • Requirements for your development environment
  • Building your first Visual Web Part
  • Traditional Web Part projects
  • SharePoint Project settings in Visual Studio
  • Building the user interface
  • ASP.NET and Web Parts
  • SharePoint controls

Making Web Parts Customizable

  • Web Part properties
  • Common Web Part properties
  • Custom Editor Parts
  • Advanced properties
  • Runtime filters

Packaging, Deployment, and Security

  • Solution packages
  • Deployment and activation
  • Sandboxed solutions
  • Web application targeted solutions
  • Upgrading solutions

Tools for Troubleshooting and Logging

  • Logging and error handling in SharePoint
  • Debugging Web Parts with Visual Studio
  • The Developer Dashboard
  • Custom error handling
  • Other debugging tools

Building a Windows Phone 8 App

  • Downloading the Windows Phone 8 SDK
  • Tip Calculator App Introduction
  • Test-Driving the Tip Calculator App
  • Tip Calculator Technologies Overview
  • Building the App?s GUI
  • Adding Functionality to the App with C#
  • WMAppManifest.xml
  • Windows Phone Dev Center
  • Selling Your Apps in the Windows Phone Marketplace
  • Other Popular Mobile App Platforms
  • Developer Documentation
  • Additional Windows Phone 8 Resources
What You Can Expect

At the end of this course, students will be able to:

  • Understand and apply C# power features.
  • Create Windows mobile apps.
  • Create SharePoint Web Parts
  • Design and build Web Services
  • Work with the Entity Framework
  • Use Test Driven Development Techniques
  • Code and test LINQ solutions
  • Understand generics and iterators
Who Should Take This Course

This course is designed for C# developers interested in additional programming techniques.

Recommended Prerequisites

Some C# programming, Visual Studio 2012 and .NET 4.5 or newer

Training Style

Instructor led with 50% lecture and 50% lab.

« Hide The Details
Related Courses
Code Course Title Duration Level
Programming the .Net Framework with C#
5 Days
C# .NET Programming and WinForm Applications
5 Days
Advanced Development Topics In Visual C#
4 Days

Every student attending a Verhoef Training class will receive a certificate good for $100 toward their next public class taken within a year.

You can also buy "Verhoef Vouchers" to get a discounted rate for a single student in any of our public or web-based classes. Contact your account manager or our sales office for details.

Schedule For This Course
There are currently no public sessions scheduled for this course. We can schedule a private class for your organization just a couple of weeks from now. Or we can let you know the next time we do schedule a public session.
Notify me the next time this course is confirmed!
Can't find the course you want?
Call us at 800.533.3893, or
email us at [email protected]