ADN Club > Revit API

Работа с WindowForms.

<< < (2/4) > >>

Андрей1986:
У меня есть коллектор с определенными видами уровней и в каждой модели они свои. Я же не могу привязываться к имени? Мне этот список можно как-то создать и перечислить по Id и Name уровни? Как можно это написать?

Алексей Кулик:
Можно попытаться поменять прямую реализацию LevelRepository на некий абстрактный GenericReository или вообще интерфейс, и в каждом конкретном случае подсовывать свою реализацию. Я не шарю в Revit и его API, так что более подробно уже точно не скажу.
Off-Topic: показатьЯ у себя в коде примерно так и сделал - отдельный интерфейс, и пара его реализаций - одна для реальной работы с файлами dwg, вторая для тестов и обработки фейковых данных.
А что значит "в каждой модели они свои"? Общие-то свойства какие-то есть, верно? И потом, я сделал элементарнейший вариант. Барин, дай пару часов, с работой подразобраться надо :)

Алексей Кулик:
Так, пока слегка отпустило. Допустим, что Level у тебя становится нечто типа:

--- Код - C# [Выбрать] ---namespace WindowsFormsApp1.Entities{    public class Level    {        public int Id { get; set; }        public string Name { get; set; }        public string BaseRevitFileName { get; set; }        public bool IsTemplate { get; set; }    }}И вместо Name тебе надо показывать и BaseRevitFileName, и собственно Name (уж откуда и как ты будешь это выцеплять - проблема того самого LevelRepository ;)).
Тогда есть два варианта:
Добавлять "напрямую, в лоб и без протокола":

--- Код - C# [Выбрать] ---            foreach (Level item in levels)            {                checkedListBox1.Items.Add(item.BaseRevitFileName + " => "+ item.Name);                checkedListBox1.SetItemChecked(pos, item.IsTemplate);                 pos++;            }Либо ради приколу переопределить ToString для Level:

--- Код - C# [Выбрать] ---namespace WindowsFormsApp1.Entities{    public class Level    {        public int Id { get; set; }        public string Name { get; set; }        public string BaseRevitFileName { get; set; }        public bool IsTemplate { get; set; }         public override string ToString()        {            return $"{BaseRevitFileName} >> {Name}";        }    }} И тогда вставка становится попроще:

--- Код - C# [Выбрать] ---            foreach (Level item in levels)            {                checkedListBox1.Items.Add(item);                checkedListBox1.SetItemChecked(pos, item.IsTemplate);                pos++;            }Учитывая далеко ненулевую вероятность, что аналогичное представление понадобится еще в тысяче разных мест, я б, наверно, пошел по второму пути

Андрей1986:
Алексей, спасибо, что уделил время! Молниеносно реагируешь. А в сообществе писал, что только переходишь на C#(всем бы так). ;) ;D
Мне это нужно попробавать...

Алексей Кулик:
Off-Topic: показатьДык я и не перешел еще. Мне до перехода как до Луны и обратно. Пешком :)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии