Added #if NO_TYPE_INFO to allow use outside .NET 4.5