Делегаты, даже если они могут быть встроенными, все равно будут нести данные о вызываемом методе и цели в своих свойствах.
твет Один из вопросов о SO прокомментировал Валентин Кузуб, который утверждает, что встраивание свойства компилятором JIT приведет к тому, что отражение перестанет работать.Дело в следующем:
Функция принимает лямбда-выражение и использует отражение, чтобы найти свойство. Это распространенная практика в MVC в
class Foo
{
public string Bar { get; set; }
public void Fuzz<T>(Expression<Func<T>> lambda)
{
}
}
Fuzz(x => x.Bar);
Fuzz
расширения.HtmlHelper
Я не думаю, что отражение перестанет работать, даже если
свойство становится встроенным, так как это вызовBar
это будет встроено иBar
вернет действительныйtypeof(Foo).GetProperty("Bar")
Не могли бы вы подтвердить это, или мое понимание метода встраивания неверно?PropertyInfo
.
Кстати, я нашел эту интересную статью, которая показывает другие причины не использовать лямбда-выражения в реализациях INotifyPropertyChange