powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Шаблон класса для представления справочников
25 сообщений из 127, страница 1 из 6
Шаблон класса для представления справочников
    #38538368
nnezam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Поможите, плиз.

Имеется задача. Есть несколько справочников в БД (Firebird). Принципы работы справочников крайне похожи, но не совсем одинаковы. Мысль: сделать некий шаблон класса справочника. А потом наследуясь от него реализовывать классы для всех справочников.
Вопроса два:
1. Правильные ли мысли?
2. Если мысли верные, то на основе чего создать шаблон класса; да еще так сваять, чтобы быстро цеплять к Девовскому гриду.

На основе реализации IBindingList получается, но как то коряво и громоздко.
На основе Bindinglist<T> грид не цепляет автоматом проперти и т.д.

Наверняка есть бест практис. Подскажите - что почитать.
P.S. Не хочется ковыряться со всякими XPO, EF и т.п. ( Хочу свой маленький велосипедик:))
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539565
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnezam,

сделай на основе:
Код: c#
1.
2.
3.
4.
5.
6.
class DictItem
{
public int Id{get; private set;}

public string Name {get;set;}
}
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539681
nnezam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation,

как создать класс БО более или менее понятно.
На основе чего создать коллекцию БО? Вот в чем суть вопроса.)
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539686
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё это обобщение справочников - от лукавого.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539695
nnezam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я правильно понимаю, что берем и для каждого, например, справочника ваяем свой класс коллекции элементов?
Дело в том, что в получившихся классах коллекций ( наследники от BindingList<Dict1>) много одинакового кода...
Лень - это же двигатель прогресса)) Вот и хочется что то придумать изящное...
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539713
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВсё это обобщение справочников - от лукавого. во-во! +100. А потом будет для каждого справочника по костылю). и в итоге будет супер код с кучей if-else.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539906
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВсё это обобщение справочников - от лукавого. Нет! :-)
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539946
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУВсё это обобщение справочников - от лукавого. Нет! :-)О, давайте говнокодом справочниками меряться

Мой вариант:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
[Serializable]
public class Reference : Record, IConvertibleTo<ReferenceCondition>
{
    protected string code;
    protected string name;
    private Reference parent;
    private ReferenceType type;

    public Reference()
        : this(ReferenceType.Unknown)
    {
    }

    public Reference(ReferenceType type)
    {
        this.type = type;
    }

    [XmlAttribute, DefaultValue(null)]
    public virtual string Code
    {
        get { return code; }
        set { code = value; }
    }

    [XmlAttribute, DefaultValue(null)]
    public virtual string Name
    {
        get { return name; }
        set { name = value; }
    }

    [XmlElement]
    public virtual Reference Parent
    {
        get { return parent; }
        set { parent = value; }
    }

    [XmlIgnore, DefaultValue(ReferenceType.Unknown)]
    public virtual ReferenceType Type
    {
        get { return type; }
        set { type = value; }
    }

    public override void Clear()
    {
        base.Clear();

        code = null;
        name = null;
        parent = null;
    }

    public override bool IsEmpty()
    {
        return base.IsEmpty()
            && String.IsNullOrEmpty(code)
            && String.IsNullOrEmpty(name);
    }

    protected override void ToEmpty()
    {
        base.ToEmpty();

        parent = new Reference();
    }

    public override string ToString()
    {
        if (!String.IsNullOrEmpty(name))
            return name;
        if (!String.IsNullOrEmpty(code))
            return code;
        return String.Empty;
    }

    public static bool CodeIsEmpty(Reference item)
    {
        return (item == null || String.IsNullOrEmpty(item.Code));
    }

    public static bool NameIsEmpty(Reference item)
    {
        return (item == null || String.IsNullOrEmpty(item.Name));
    }

    // Реализация интерфейса IConvertibleTo<ReferenceCondition>
    public virtual void CopyTo(ReferenceCondition item)
    {
        base.CopyTo(item);

        item.Code = code;
        item.Name = name;
        item.Parent = ConvertTo<ReferenceCondition>(parent);
        item.Type = type;
    }
}
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38539952
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретный справочник:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
[Serializable]
public class NearbyPlace : Reference, IConvertibleTo<NearbyPlaceCondition>
{
    private float distance;

    /// <summary>
    /// Растояние до места
    /// </summary>
    [XmlAttribute, DefaultValue(0)]
    public float Distance
    {
        get { return distance; }
        set { distance = value; }
    }

    public override void Clear()
    {
        base.Clear();

        distance = 0f;
    }

    public override string ToString()
    {
        if (distance > 0f)
            return String.Format("{0} - {1:f2} km", base.ToString(), distance);
        return base.ToString();
    }

    // Реализация интерфейса IConvertibleTo<NearbyPlaceCondition>
    public void CopyTo(NearbyPlaceCondition item)
    {
        base.CopyTo(item);

        if (distance > 0f)
            item.MaxDistance = distance;
    }
}
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540012
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA... говнокодом ...Странное у Вас отношение к результатам своей работы.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540040
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANA... говнокодом ...Странное у Вас отношение к результатам своей работы.Здоровая само- и не только критика
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540071
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУВсё это обобщение справочников - от лукавого. Нет! :-)
А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540111
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА кто сказал, что идентификаторы должны быть интами?Я сказал! Поощарять бардак не собираюсь.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540127
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.

long + guid :-) - самые частые у меня были.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540158
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Нет! :-)
А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.Дак у него одна база на всю жизнь, у него не может быть ничего, кроме интов :)
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540167
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.Дак у него одна база на всю жизнь, у него не может быть ничего, кроме интов :)Это хорошо или плохо?
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540197
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Нет! :-)
А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.

=)) я тут в одной конторе увидел айдюхи: decimal - супер
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540204
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationМСУпропущено...

А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.

=)) я тут в одной конторе увидел айдюхи: decimal - супер

и объяснение гавноглавного кодера : в оракле нет интов
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540207
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationnnezam,

сделай на основе:
Код: c#
1.
2.
3.
4.
5.
6.
class DictItem
{
public int Id{get; private set;}

public string Name {get;set;}
}




Я вот до сих не могу понять логику людей, дающих такие названия!
Либо DictionaryItem, либо DictIt если уж сокращать так каждое слово :) !
Видел еще аналог SpravItem.. где то в 1с подобном коде....
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540213
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationpationпропущено...


=)) я тут в одной конторе увидел айдюхи: decimal - супер

и объяснение гавноглавного кодера : в оракле нет интов
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540229
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Дак у него одна база на всю жизнь, у него не может быть ничего, кроме интов :)Это хорошо или плохо?Это нормально :)
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540250
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУА кто сказал, что идентификаторы должны быть интами?Я сказал! Поощарять бардак не собираюсь.
В MS SharePoint идентификаторы списков и библиотек инты, в MS Dynamics CRM гуиды. Кого на кол?

Arm79long + guid :-) - самые частые у меня были.
Да хоть массив байт. Серьезно :) Тот же токен доменной учетной записи. А тут Леша нам впаривает универсальный справочник. Мда, дела...

skyANAДак у него одна база на всю жизнь, у него не может быть ничего, кроме интов :)
Именно, вот и пытаюсь наставить на путь истинный сбившегося человека

Алексей КskyANAпропущено...
Дак у него одна база на всю жизнь, у него не может быть ничего, кроме интов :)Это хорошо или плохо?
Это дико Но нормально ))

pation=)) я тут в одной конторе увидел айдюхи: decimal - супер
Тоже норм ))
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540296
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто-то из присутствующих не владеет элементарными навыками ООП, я не виноват. :-)

Guid нужен, чтобы обеспечить уникальность между разными серверами. Необходимость такой уникальности кодов элементов классификаторов сомнительна. Если этого не понимает кто-то из присутствующих, то я не виноват тоже.
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540301
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЕсли кто-то из присутствующих не владеет элементарными навыками ООП, я не виноват. :-)
Ути какие мы строгие

Алексей КGuid нужен, чтобы обеспечить уникальность между разными серверами.
Откуда такое громкое заявление? На нобель идёшь, не меньше ))

Алексей КНеобходимость такой уникальности кодов элементов классификаторов сомнительна. Если этого не понимает кто-то из присутствующих, то я не виноват тоже.
Гуиды - для кросссерверности! Всем по пиву, ура, товарищи!
...
Рейтинг: 0 / 0
Шаблон класса для представления справочников
    #38540306
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КGuid нужен, чтобы обеспечить уникальность между разными серверами.
Откуда такое громкое заявление? На нобель идёшь, не меньше ))Ну тогда озвучивай остальные причины, из-за которых требуется делать в БД поле типа Guid:

1. Уникальность между разными серверами.
2. ...
3. ...
...
Рейтинг: 0 / 0
25 сообщений из 127, страница 1 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Шаблон класса для представления справочников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]