Свойство index для типа помечено атрибутом DefaultMemberAttribute
.Это свойство устанавливается для класса / структуры / интерфейса.В C # при определении индексированного свойства (например, public char this[int index]
) ему будет присвоено имя Item
, хотя я не думаю, что это жесткое правило.
Теперь интересные вещи со свойствамив том, что вы можете вызывать их с параметрами (даже с геттерами), поэтому, получив имя свойства index, вы просто делаете Expression.Property
.Например:
string defaultMember=GetDefaultPropertyName(typeof(SomeIndexType));
ParameterExpression indexExpr = Expression.Parameter(typeof(int), "Index");
Expression indexAccessExpr = Expression.Property(objExpr, defaultMember, indexExpr);
Очевидно, вам придется реализовать GetDefaultPropertyName
, чтобы получить свойство от типа.Как только вы получите атрибут, свойство MemberName
сообщит вам, к какому свойству вам нужно получить доступ.