Implementing an Implicit Conversion With C# 7.0 Deconstructors

,
October 14, 2016 / No Comment

While the deconstruct syntax is interesting for its convenience in assigning to a set of variables, what I believe has far broader implications is its potential to provide an “implicit conversion operator” and in a syntax that, quite frankly, is far easier to recall than the implicit cast operator.  For example, I can provide deconstructors that map to a string […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#

Deterministic Finalization with IDisposable and the Using Statement

,
October 14, 2016 / No Comment

The problem with finalizers on their own is that they don’t support deterministic finalization (the ability to know when a finalizer will run). Rather, finalizers serve the important role of being a backup mechanism for cleaning up resources if a developer using a class neglects to call the requisite cleanup code explicitly.
For example, consider the TemporaryFileStream, which includes not […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#

Finalizers in C#

,
October 14, 2016 / No Comment

The following is an Expert from Chapter 9 of Essential C#.
Finalizers allow developers to write code that will clean up a class’s resources. Unlike constructors that are called explicitly using the new operator, finalizers cannot be called explicitly from within the code. There is no new equivalent such as a delete operator. Rather, the garbage collector is responsible for […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#

Creating a Fody Add-in

,
September 22, 2016 / 1 Comment

Fody is a fantastic framework for creating IL weavers. For those who are unfamiliar with IL weaving, it is the art (and at times a seemingly magical incantation) of modifying an assembly post-compile. In this article we will walk through creating a library that can modify an existing .NET assembly.
Let’s start by looking at what actually happens when you […]
Read more

AUTHOR: CATEGORY: .Net, C#, Visual Studio

Displaying the Build Date on your Web Pages

,
August 26, 2016 / No Comment

The Build Date Problem
I have struggled to find a good way to communicate with users the version of a web site. Version numbers are tricky and only meaningful to people close to the project. I like dates but they are often tricky to implement.
My default choice has always been dates because they are easy for customers to understand. […]
Read more

Using PowerShell’s Invoke-RestMethod to Access VSTS OData

,
August 23, 2016 / No Comment

Given that Microsoft has abandoned their TFS CmdLets, one alternative is to access VSTS data is through the OData interface using the Invoke-RestMethod.
Before you begin you need to setup Alternate authentication credentials by navigating to https://<yourtenant>.visualstudio.com/_details/security/altcreds.  Once these are established, you will likely want to save them to a local PowerShell variable so that they can be reused for each […]
Read more

AUTHOR: CATEGORY: .Net, Blog, PowerShell, TFS, Uncategorized

Making unit testing easier

,
August 4, 2016 / No Comment

I love unit tests. Specifically, I love unit tests that are easy to maintain. When I spend more time setting up a test then doing actual testing, it is a very strong code smell. Sloppy unmaintainable code has no place in your projects, especially not in your unit test project.
 
In this post I would like to present two […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#

Upgrading ASP.NET Core to RTM

,
July 20, 2016 / No Comment

Here are the steps I followed to get an ASP.NET Core project upgraded from an RC1 with some RC2 beta bits up to RTM. 
This project is a full framework project without cross-platform capability. It uses Bower, NPM, and Gulp. I started the process by creating a scaffolded new project and based the upgrade on that. I also found it helpful to […]
Read more

Locking a Block of Code With an Integer

,
June 27, 2016 / No Comment

I was talking with a developer recently who was convinced that you could use a static integer variable to lock a block of code merely by casting it to an object, like this

First it must be noted that an integer cannot be used by itself in a lock statement because it is a value type. But when you […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#