Endereço de memória de um objeto em C #

Eu tenho uma função escrita há algum tempo (para .NET 3.5) e agora que atualizei para 4.0

Eu não posso fazê-lo funcionar.

A função é:

public static class MemoryAddress
{
    public static string Get(object a)
    {
        GCHandle handle = GCHandle.Alloc(a, GCHandleType.Pinned);
        IntPtr pointer = GCHandle.ToIntPtr(handle);
        handle.Free();
        return "0x" + pointer.ToString("X");
    }
}

Agora, quando eu chamo - MemoryAddress.Get (new Car ("blue"))

public class Car
{
    public string Color;
    public Car(string color)
    {
        Color = color;
    }
}

Eu recebo o erro:

O objeto contém dados não primitivos ou não-blittable.

Por que não funciona mais?

Como posso obter agora o endereço de memória dos objetos gerenciados?

questionAnswers(8)

yourAnswerToTheQuestion