Welcome!

Bill Wagner

Subscribe to Bill Wagner: eMailAlertsEmail Alerts
Get Bill Wagner via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Top Stories by Bill Wagner

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-LINQ

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 Dynamic Systems Using Attributes and Reflection

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)