Подскажите аналог nameof, чтобы отобразить не только атрибут, но и его вхождения
В своем приложении я часто использую nameof оператор для работы с базой данных через ORM. К примеру, использую nameof(Employee.Id) и вывожу Id соответственно (конечно, мы можем прописывать атрибут через кавычки, но не всегда удается таким образом отследить изменения объекта).
Но появилась необходимость в том, чтобы отобразить не только атрибут, но и вхождения, к примеру, какой-нибудь_оператор(Employee.Job.Country.Id) и появился Job.Country.Id, можете подсказать как это сделать?
Условно, я хочу чтобы второй nameof(Test.Count.Id) вернул мне Count.Id
var esqTest = new EntitySchemaQuery(userConnection.EntitySchemaManager, nameof(Test));
esqTest.AddAllSchemaColumns();
esqTest.Filters.Add(esqTest.CreateFilterWithParameters(FilterComparisonType.Equal, nameof(Test), selectedRow));
esqTest.Filters.Add(esqTest.CreateFilterWithParameters(FilterComparisonType.Equal, nameof(Test.Count.Id), 2));
Ответы (1 шт):
хз то или не то, но вот есть такой фокус.
Например, у нас класс
public class Foo
{
public string Id{get;set;}
}
Напишем простой Extension метод
public static class Ext
{
public static string PropsPath<T, K>(this T obj, Expression<Func<T, K>> exp)
{
return exp.Body.ToString();
}
}
Как можно вызвать
Foo myObject = new Foo();;
var ret = myObject.PropsPath(x=>x.Id);
Console.WriteLine(ret);
на выходе будет
x.Id
Имейте ввиду, что этот код не сильно эффективный, так что я бы не стал в каких то критических по производительности местах его использовать.
