C-Sharpen Up 2012.2
Saturday, October 6th, 2012
This is a repeat of the very successful event we ran this past spring. If you already attended that event, please don’t register for this as we’d like to give everyone a chance to attend.
Don’t miss this exciting day of C# content. Following the progression of the .NET Framework release schedule, we’ll cover some great topics from each version of C#! We’ll end the day with a look at some popular “Best Practices” that can also help take your skills up a notch. What’s best is that all of this material is based on current technology. So you’ll be able to start using what you learned immediately!
This is NOT an introduction to C#. This event is intended for experienced C# developers looking to step up their game and become familiar with some of the advanced features of the language that they may not be using today. We welcome all attendees but if you are new to C#, this may not be for you. We’ll be moving pretty quickly through some complicated features.
8:30 amDani Diaz
In this talk we can talk about type system, manage code, assemblies, IL, reflection and GC.
9:55 amStephen Bohlen
When .NET introduced Generics, they were largely used in the Base Class Library to support strongly-typed collections. But Generics also open the door to a richer vocabulary for us to use to express our intent in code. In this session we will explore the multitude of uses for .NET Generic Types beyond collections including creating more flexible class declarations and method signatures as well as understanding the role of generic type constraints.
When .NET 3.5 ushered in the age of the lambda expression for C#, the most visible use-case for this language feature was in support of Language-integrated-Query (more commonly known as “LINQ”). But lambdas also offer us the opportunity to be much more succinct in our coding of many common C# constructs. From events to delegates to anonymous methods, closures, and more, lambdas offer us the opportunity to say more with less in a fundamentally different way than we’ve previously considered using C#. In this talk we will explore both the underlying principles behind lambda expressions and several of the ways that we can drastically improve our code by leveraging this new functional-style paradigm in .NET.
11:10 amAndy Schwam
LINQ (Language Integrated Query) is one of the best and easiest to use features in .NET. Introduced in C# 3.5, it allows developers to easily query collections of data. What is great is that it allows the same technique/syntax to be used to query objects in memory, databases, xml and other sources. The session will focus on the core principals of LINQ as well as several related language enhancements that make LINQ possible including extension methods, anonymous types, implicitly typed variables, and more.
12:50 pmSteve Michelotti
This presentation will cover the new C# 4.0 language features. This demo-heavy session will begin by covering various dynamic scenarios with C# including the new “dynamic” keyword, simplified Reflection, custom dynamic objects, duck typing, Iron Ruby integration, and more. We will also cover named and optional parameters, new COM Interop enhancements, co-variance, and contra-variance. If you are a C# developer, come learn about the new language tools that you can put in your toolbox!
2:05 pmStephen Bohlen
In this session we take a small, functional but tightly-coupled, software solution and improve its design using each of Robert C. Martin’s S.O.L.I.D. principles as follows: SRP: Single Responsibility Principle; OCP: Open-Close Principle; LSP: Liskov Substitution Principle; ISP: Interface Segregation Principle; DIP: Dependency Inversion Principle. Each principle is applied in sequence to the existing solution, making it possible for the attendee to observe the principle in relative isolation first while also evolving an understanding of how the principles all collaboratively reinforce each other when applied together. Before each principle is applied and the solution is refactored to introduce it, the attendee is presented with one or two simple PowerPoint slides to introduce the concept and provide some abstract understanding of its goals and benefits to OO programming. The principle is then applied to the existing solution, demonstrating the practical application of the principle to working software. At each step along the way, the existing solution (a simple console application) is re-executed, demonstrating that the overall behavior of the software solution has not been negatively impacted by the various refactorings.
3:40 pmAndy Schwam
In this presentation I’ll provide an introduction to unit testing with the help of Dependency Injection and Mocking. If you struggle with unit testing, you’ll see how these tools can make life easier for you.