It's been a few months since Visual Studio 2005 was released. In that time
you've probably seen and read quite a bit about generics. Unfortunately all
those articles and presentations can leave you with the impression that
generics are useful only in the context of collections (List,
Dictionary, Queue, and so on).
It's true that many of the most common uses of generics involve collections.
But limiting your use to collections will cause you to miss many of the
opportunities for creating components that you can reuse in even more ways.
In fact, many idioms where developers commonly copy, paste, and modify source
code can be solved with generics. You should look for these opportunities,
because you'll have more functionality in a smaller code base.
Enhance a generic class, and all users of it are one recompile away from the
new features. That's much better ... (more)
C# 3.0 represents a radical new approach to .NET development. The new
language features were added primarily to support Language Integrated Query
(LINQ), allowing you to query data using the same constructs regardless of
where the data is currently stored. However, you'll find that there are many
things you can do with these new features outside of queries. There's a
learning curve for these new features, but by adopting them you'll find that
you can be much more productive than you ever were in earlier versions of C#.
In this article, I'll give you a whirlwind tour of C# 3.0 lan... (more)
Building binary components sometimes means utilizing late binding and
reflection to find the code with the particular functionality you need.
Reflection is a powerful tool, and it enables you to write software that is
much more dynamic. Using reflection, an application can be upgraded with new
capabilities by adding new components that were not available when the
application was deployed. That's the upside.
With this flexibility comes increased complexity, and with increased
complexity comes increased chance for many problems. When you use reflection,
you circumvent C#'s type sa... (more)