Выражение для пути к свойству элемента свойства перечислимого типа - PullRequest
0 голосов
/ 07 января 2020

Я пишу метод, который должен знать путь к вложенному свойству из исходного объекта. Я думаю о том, чтобы взять Expression<Func<T, object>>. Моя подпись метода будет выглядеть следующим образом.

public bool DetailsQueried<T>(IResolverContext ctx, Expression<Func<T,object>>propertyPath)

Я использую ее, как показано ниже

Analyzer.DetailsQueried<PaginatedRecords>(ctx, page => page.PageCount)

Теперь я хочу перейти к вложенному свойству, которое является частью элементов перечислимого свойство типа источника.

Analyzer.DetailsQueried<PaginatedRecords>(ctx, page => page.Records[0].Name)

Как вы можете видеть выше, индекс 0 выше не имеет значения, я просто хотел указать свойство Name. Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 07 января 2020

По моему мнению, вы можете go с использованием Fluen API здесь. Например, вы можете использовать EF Fuluent API

. Для вашего конкретного случая c это может быть что-то вроде:

public class Analyzer<T>
{
    public bool DetailsQueried(IResolverContext ctx, Expression<Func<T, object>> simpleProperty) => true;
    public Analyzer<TItem> DetailsQueried<TItem>(IResolverContext ctx, Expression<Func<T, ICollection<TItem>>> simpleProperty) => new Analyzer<TItem>();
}

и используется как:

var analyzer = new Analyzer<PaginatedRecords>();
analyzer
    .DetailsQueried(ctx, outer => outer.Records)
    .DetailsQueried(ctx, inner => inner.Name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...