Создайте Func для возврата как ссылочных, так и типов значений
У меня есть метод, возвращающийFunc<object>
построен по выражению следующим образом:
var expr = Expression.Property(
Expressions.Expression.Constant(new Foo { Name = "Hans", Age = 3 }, typeof(Foo)),
"Age");
var f = Expression.Lambda<Func<object>>(expr).Compile();
Это выражение должно возвращатьAge
-свойство этого манекенаFoo
-объект. Проблема в том, что я хочу вернутьFunc<object>
вместоFunc<int>
Я получаю
ArgumentException: выражение типаSystem.Int32
нельзя использовать как тип возвратаSystem.Object
, (или что-то подобное, есть немецкая версия).
Если бы я выбралName
-свойство вместоAge
-собственность та же работает. Я знаю, что это связано с боксом и распаковкой какint
не распространяетсяobject
.
Однако, как я могу вернуть соответствующую функцию, которая представляет значение-тип-свойство?