.NET Framework Expression pour récupérer un champ statique


Exemple

Ayant un exemple de type comme ceci:

public TestClass
{
    public static string StaticPublicField = "StaticPublicFieldValue";
}

Nous pouvons récupérer la valeur de StaticPublicField:

var fieldExpr = Expression.Field(null, typeof(TestClass), "StaticPublicField");
var labmda = Expression.Lambda<Func<string>>(fieldExpr);

Il peut alors être compilé dans un délégué pour récupérer la valeur du champ.

Func<string> retriever = lambda.Compile();
var fieldValue = retriever();

// Le résultat de fieldValue est StaticPublicFieldValue