Я пытаюсь использовать выражения для строгой типизации над свойствами.
Итак, у меня есть эта модель.
public class Entity
{
public int Id { get; set; }
public string Name { get; set; }
}
И этот метод, который, в конце концов, мне бы хотелось каким-то образом использовать свойства, но сейчас я просто хочу их вернуть.
public List<string> DoSomething<TEntity>(params Expression<Func<TEntity, object>>[] expressions)
{
List<string> props = new List<string>();
foreach (var expression in expressions)
{
var memberExpression = expression.Body as MemberExpression;
var q = memberExpression.Member.Name;
props.Add(q);
}
return props;
}
Это использование
var props = DoSomething<Entity>(x => x.Id, x => x.Name);
Ну, это работает, но только частично. Под этим я подразумеваю, что он будет работать для ссылочных типов, например, он будет работать для свойства Name, потому что это ссылочный тип, но он будет возвращать ноль для любого типа значения, в данном случае для ID, который является целым числом.
Почему это так и каково решение?