Перебор List‹T› из импортированного (.net) класса в Dyalog APL v14.0 и выше

Я полный новичок, когда дело доходит до APL, и я надеюсь, что некоторые из вас, замечательные люди, смогут мне помочь...

У меня есть библиотека классов, написанная на С# и экспортированная в dll. Затем я импортирую этот класс в Dyalog APL (v14.0), и я могу создавать экземпляры объектов типов, определенных в библиотеке классов, и могу обращаться к полям по мере необходимости. Однако я обнаружил, что не могу перебирать элементы любого List‹T>.

Класс C# (не о чем особо писать, но я включил его на всякий случай):

namespace Motor_lib.Objects
{
    public class Motor
    {
        public int? Id_motor = null;
        public string Reference = null;
        public string Message = null;
        public DateTime? Date_modif = null;
        public int? Id_hydrotorque = null;
        public int? Id_spline = null;
        public int? Id_pivot = null;
        public int? Id_cam_cover = null;
        public int? Id_cam_B_sup = null;
        public int? Id_status = null;
        public int? Id_CalcType = null;
        public Status Status = null;
        public Calculation_type Calculation_type = null;
        public Spline Spline = null;
        public List<Relation> Compatible_Valving_covers;
        public Valving_cover Valving_cover = null;
        //even more fields...

        public Motor()
        {
        }

        //Methods...
    }
}

Вернемся к АПЛ:

⎕using ← 'Motor_lib.Objects,D:\Motor_lib.dll'
⍝Fetch a motor from db
myMotor ← Motor.Get 5
⍝The following works
myMotor.Reference
⍝produce the following output
Ref of 5
myMotor.Reference ← ⊂'new ref of 5' ⍝Also works
⍝Now if i do 
myMotor.Compatible_Valving_covers.Count
⍝Produces 2 which is correct
myMotor.Compatible_Valving_covers[1].Reference ⍝Also works; I can access the 
reference...

Мой вопрос: как перебрать каждый элемент списка и отобразить значения их полей? Я пробовал следующее без везения:

]display ⌷¨myMotor.Compatible_Valving_covers
┌────────────────────────────────────────────────────────────┐
│ ┌→───────────────────────────────────────────────────────┐ │
│ │ Motor_lib.Objects.Relation  Motor_lib.Objects.Relation │ │
│ └#───────────────────────────────────────────────────────┘ │
└∊───────────────────────────────────────────────────────────┘

Как мне заставить его отображать значения полей Relation (например, Relation.Id или Relation.Reference...)

Извините за довольно длинный вопрос, и если это неясно. Любая помощь приветствуется.


person Jean-Benoist Brault    schedule 05.12.2017    source источник
comment
Я не уверен, что полностью понимаю, но попробуйте удалить ¨, например: ]display ⌷myMotor.Compatible_Valving_covers.   -  person Adám    schedule 10.12.2017
comment
Не могли бы вы, пожалуйста. добавить результат ]display ⌷myMotor.Compatible_Valving_covers.Reference к вашему вопросу? (Надеюсь, это поможет ответить...)   -  person MBaas    schedule 11.12.2017
comment
Извините за мой поздний ответ, @Adám code]показать ⌷myMotor.Compatible_Valving_covers ┌→────────────────────────────└ ──────────────────────┐ │ Motor_lib.Objects.Relation Motor_lib.Objects.Relation │ └#────────── ─────────────────────────────────────────── ] .Compatible_Valving_covers.Reference * Ошибка выполнения команды: VALUE ERROR   -  person Jean-Benoist Brault    schedule 13.12.2017


Ответы (1)


Хорошо, похоже, что я был близок, все, что мне нужно было сделать, это:

⍝ It works !!! 
(⌷¨myMotor.Compatible_Valving_covers).Reference
Test_vc_01  Test_vc_02
person Jean-Benoist Brault    schedule 18.12.2017