It would be awesome if async/await reduced code complexity instead of just hiding it. But when complexity is unavoidable, we have to make it manageable.
In several projects that I have worked on over the last few years, we instituted a StateHolder class that eases the burden of managing state.
"I hate regions" not only automatically expands the regions when you open the file, it changes the font size and color of the regions.
How to make Ninject automatically bind certain types of classes, and how to make it fully reset the Kernel between tests.
Conventional wisdom around the Internet seems to be that writing async tests is hard enough that it's okay to avoid it. I disagree.
IEnumerable provides several benefits to C#, including improved readability, more elegant solutions, and code composability.
You can write inline C# in your XAML file with the x:Code Intrinsic type. But it might not be such a great idea.
Describes a method of using IObservables which allows for efficient re-use of complicated transforms.
Dynamic languages have good generic forms of memoization, but I haven't found one I'm happy with in C#. This is a sketch of a generic memoization in C#.
Every software development environment has its bright points, and C# is no exception. The following are a few features and tools we enjoyed working with.
If you have had any trouble figuring out how to test your presenter classes (or any classes that respond to events), I recommend trying this technique.