Create Func, um sowohl Referenz- als auch Werttypen zurückzugeben
Ich habe eine Methode, die ein @ zurückgiFunc<object>
wird wie folgt durch einen Ausdruck gebildet:
var expr = Expression.Property(
Expressions.Expression.Constant(new Foo { Name = "Hans", Age = 3 }, typeof(Foo)),
"Age");
var f = Expression.Lambda<Func<object>>(expr).Compile();
Dieser Ausdruck sollte das @ zurückgebAge
-Eigenschaft dieses DummysFoo
-Objekt. Das Problem ist, dass, wie ich ein @ zurückgeben möchFunc<object>
anstelle einerFunc<int>
Ich bekomme ein
ArgumentException: Ein Ausdruck vom TypSystem.Int32
kann nicht als Rückgabetyp @ verwendet werdSystem.Object
. (oder ähnliches, habe deutsche version).
Wenn ich das @ gewählt hätName
-Eigenschaft anstelle desAge
-property das gleiche funktioniert. Ich weiß, das hat mit Boxen und Unboxing als @ zu tint
verlängert nichtobject
.
Wie kann ich die entsprechende Funktion zurückgeben, die eine value-type-Eigenschaft darstellt?