C# 6 - What's good?

To get a full list of completed and planned features included with C# 6 / Rosyln take a look here It's great to see with Rosyln being build out in the open we get transparency on the new C# 6 features, because it's open source, you can download the code and…

Read this article

Using Domain Events

An issue commonly encountered when working with DDD aggregates, is getting aggregates to interact; with each other, and other services around it. If you are unfamiliar with the aggregate pattern, Martin Fowler sums it up nicely. Transactions shouldn't happen between aggregates, they are separate contexts with separate concerns. However this…

Read this article

Handling immutable types (part 2)

You can read the first post of the series - Handling immutable types part 1 - If you haven't already. In my last post, I went on to explain some of the benefits of immutable types in your data structures. Which is great, but what happens when your types start…

Read this article

Handling immutable types (part 1)

Immutable types are nice. We like immutable types. They are massively undervalued when building software. Many of us don't take the time to consider the purpose of the class we are creating and how it fits into the structure. Why immutable types? It is much easier to reason about a…

Read this article

OWIN self-hosting using Nancy

One of the problems surrounding OWIN self-hosting currently, is that MVC is not compatible. Due to System.Web's tight integration with IIS. vNext will solve these issues, but what about now? I want the portability of OWIN self-hosting (using HttpListener) but I still have a need for a server side…

Read this article

Procedural, not OO

Take this simple class public class Foo { public int SomeInt { get; set; } public string SomeString { get; set; } public Bar SomeBar { get; set; } public void DoSomeWork() { SomeString.Append(" Blah Blah"); SomeBar.BarMethod(); } } And initialise it like this: var foo = new Foo { SomeInt = 1, SomeString = "I'm a string", SomeBar = new Bar() }; foo.…

Read this article