Özellik adı C# içindeki Lambda ifadesine nasıl dönüştürebilirim? Bunun gibiÖzellik Adı Lambda Expression C#
: string prop = "Name";
(p => p.Name
)
public class Person{
public string Name{ get; set; }
}
sayesinde!
Özellik adı C# içindeki Lambda ifadesine nasıl dönüştürebilirim? Bunun gibiÖzellik Adı Lambda Expression C#
: string prop = "Name";
(p => p.Name
)
public class Person{
public string Name{ get; set; }
}
sayesinde!
kullanarak ifade ağaçları Lambda ifade oluşturabilir.
using System.Linq.Expressions;
public static Expression<Func<T, object>> GetPropertySelector<T>(string propertyName)
{
var arg = Expression.Parameter(typeof(T), "x");
var property = Expression.Property(arg, propertyName);
//return the property as object
var conv = Expression.Convert(property, typeof(object));
var exp = Expression.Lambda<Func<T, object>>(conv, new ParameterExpression[] { arg });
return exp;
}
Person
için hoşuna arayabilirsiniz:
var exp = GetPropertySelector<Person>("Name");//exp: x=>x.Name
Bu Evet, haklısınız yansıma –
değildir. Cevabı düzelttim. –
Bu yalnızca dize için çalışır. Expression.Lambda
Bir lambda yalnızca anonim bir işlevdir. Lambdaları delege olarak düzenli yöntemlerde saklayabilirsiniz. "İsim" özelliğini bir özellik yapmaya çalışmanı öneririm. Eğer gerçekten bir lambda istiyorsanız
public string Name { get { return p.Name; } }
gibi Func gibi bir temsilci türü kullanın.
public Func<string> Name =() => p.Name;
Bir lambda bir anonim yöntem kendi başına değil .. –
iyi evet, onun yerini tanımlamak için bir adı yok çünkü. –
Peki ya ifade ağaçları? Onlar da delegeler mi? : P –
Lambda deyimi bir tür değil. Bir temsilci mi yoksa bir ifade ağacı mı demek istiyorsun? Ve tam olarak * ne tür? –
Sorunuzu anlamıyorum ... Bir değişken bildirimini özellik erişimi ifadesine dönüştürmek ister misiniz? –
Lütfen neyi başarmaya çalıştığınızı açıklayın. Bir özellik isminin Lambda'ya dönüştürülmesi gerçekten anlamlı değildir. Biraz bağlam ekle. –