До сегодняшнего дня я не нашел отличную статью о выражениях - и как посмотреть на лямбда-оператор C # и сказать «о, бла-бла» ... так что, если вы знаете хорошую статью, яБуду признателен, что в качестве ответа тоже.
Пример кода для объяснения вопроса
Итак ... учитывая следующий код C #:
public class SomeClass<T>
{
public TResult SomeMethod<TResult>(Expression<Func<T, TResult>> expression)
{
// This is just an example... don't get hung up on this :)
return default(TResult);
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Как мне сделатьэто ...
var blah = new SomeClass<Person>();
blah.SomeMethod(p => p.FirstName);
во время выполнения (с использованием отражения)?
Что я ожидаю в качестве ответа
Я ожидаю что-то подобное ... но я 'Я уверен, что я не в своем выборе выражений.
// By the way, these values are being passed to me... so you
// can't change this part of the question :)
Type personType = typeof(Person);
string propertyName = "FirstName";
// THIS CODE BELOW IS OBVIOUSLY WRONG, BUT YOU GET THE IDEA OF
// WHAT I HOPE TO DO... THIS LINE OF CODE BELOW IS **ALL** I'M
// ASKING HOW TO DO :)
var expression = Expression.MakeUnary(ExpressionType.Lambda,
Expression.Property(Expression.Parameter(personType, "p"),
propertyName), typeof(string));
blah.SomeMethod(expression);