OneTrueError and ASP.NET

OneTrueError is my new startup which also is a member of Microsoft BizSpark. This post is about the client library for ASP.NET (WebForms/MVC/WebAPI). It will catch and handle all uncaught exceptions automatically. The exceptions are also uploaded to our site for analysis to enable us to suggest possible solutions

dashboard2

Continue reading “OneTrueError and ASP.NET”

Alternative to IEnumerable for read-only collections

.NET 4.5 introduced a new interface which is great if you want to expose a collection as readonly.

The problem with IEnumerable<T> is that it’s forward only. i.e. there is no guarantee that you can traverse it multiple times. The collection size might also be unknown, depending on the implementation.

So if you want to expose a collection which can be traversed multiple times and where the size is know there is as of .NET 4.5 another alternative. And that’s IReadOnlyList<T>. It inherits another new interface called IReadOnlyCollection<out T>.

Code

public interface IReadOnlyCollection<out T> 
      : IEnumerable<T>, 
        IEnumerable
{
    int Count { get; }
}

public interface IReadOnlyList<out T> 
      : IReadOnlyCollection<T>
      , IEnumerable<T>
      , IEnumerable
{
    T this[int index] { get; }
}

Usage example

public class MyRepository
{
    public IReadOnlyList<User> FindUsers(string lastName)
    {
        // [...]
    }

    // [...]
}

Immutable collections should not implement mutable interfaces

I just read the new blog post about .NETs new mutable collections. It mostly looks really nice, but there is a major problem: They implement mutable interfaces like IList<T> which has an Add() method.

Continue reading “Immutable collections should not implement mutable interfaces”