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 safety. Instead the invoke members use parameters
and return values typed as object. You must make sure the proper types are
used at runtime. In short, using reflection makes it much easier to build... (more)
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 ... (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 t... (more)