Hacer que un tipo de valor se comporte como un tipo de referencia usando Expression <Func <T>>

Sabemos que int es un tipo de valor, por lo que tiene sentido lo siguiente:

int x = 3;
int y = x;
y = 5;
Console.WriteLine(x); //says 3. 

Ahora, aquí hay un poco de código donde queremos por falta de un mejor término "vincular" las dos variables apuntan a la misma ubicación de memoria.

int x = 3;
var y = MagicUtilClass.linkVariable(() => x);
y.Value = 5;
Console.WriteLine(x) //says 5.

La pregunta es: ¿Cómo se ve el método linkVariable? ¿Cómo sería su tipo de retorno?

Aunque, titulé la publicación como hacer que un tipo de valor se comporte como un tipo de referencia, dicho método linkVariable también funciona para los tipos de referencia ... es decir,

Person x = new Person { Name = "Foo" };
var y = MagicUtilClass.linkVariable(() => x);
y.Value = new Person { Name = "Bar" };
Console.WriteLine(x.Name) //says Bar.

No estoy seguro de cómo lograr esto en C # (por cierto, no se permite usar código inseguro).

Apreciar ideas. Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta