Sunday, February 22, 2015

Protobuf-net - Did I initialize that list or not?

Protobuf-net is a very great binary serializer for .NET. I use it heavily on my project (memory, file, and over-the-wire serialization).

One of the confusions I recently had is that after I initialized a List, I assumed that it will be serialized into the stream. However, having a zero-length List, it always return null whenever protobuf deserializes the stream. I had seen some developers do a null checking or implement null-coalescing operator operations after they deserialize the stream and those null checking are scattered through-out the code (which violates the DRY principle and is ugly).

One very simple work-around for this is to provide a standard constructor and initialize the List on that constructor. Here is a sample unit test code which demonstrates that.

Special thanks to the protobuf-net author: Marc Gravell

Saturday, February 21, 2015

My C# Naming Conventions

I would like to share the naming conventions that I am using for C#. Link

I use this as a guideline to be able to make my code more readable (especially for big projects) and to be able to identify the type of variable or method in one glance.

Moq (and primitive mocking) Demo

Here is a simple demonstration of using Moq and using a primitive mocking approach.  Link


The 1st approach (using Moq), takes a bit of a learning curve, but it is worth doing it.

The 2nd approach is easier, but at the expense of creating additional dummy class/es.

Friday, February 20, 2015

JSON reading and writing in C#

Here is a very simple example of JSON operation for C#. Link