Özellikleri belirtmek için lambda ifadeleri kullanan bir API geliştiriyorum.C#: Bir zincirdeki özelliklerin isimlerini bir lambda ifadesinden alma
public void Foo<T, P>(Expression<Func<T, P>> action)
{
var expression = (MemberExpression)action.Body;
string propertyName = expression.Member.Name;
// ...
}
böyle çağrılacak için::
Foo((String x) => x.Length);
I (sadece bahsettiğim açıktır yapmak için bu basitleştirilmiş ve eksik olan) buna benzer kod bu ünlü parçası kullanıyorum
Foo((MyClass x) => x.Name.Length);
Foo kendi özellik adları içine yolunu bölmek gerekir ("Name"
ve:
Şimdi bu gibi özellik adlarını zincirleme bir özellik yolunu belirtmek isteriz). Bunu makul bir çabayla yapmanın bir yolu var mı?
bir somehow similar looking question vardır, ama onlar orada lambda ifadeleri birleştirmek için çalışıyoruz düşünüyorum.
Another question ayrıca yuvalanmış özellik adları ile uğraşır, ancak ne hakkında konuştuklarını anlamıyorum.
Vay, bu işleri ve oldukça basittir. Çok teşekkürler! –
@StefanSteinegger Eski soru, biliyorum ... ama sadece ihtiyacınız olan isimler, 'expr.ToString(). Split ('.'). Atla (1)' daha basit olurdu :) – asgerhallas
@asgerhallas: you başka bir cevap ekleyebilir. –