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

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

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

Наверняка есть бест практис. Подскажите - что почитать.
P.S. Не хочется ковыряться со всякими XPO, EF и т.п. ( Хочу свой маленький велосипедик:))
...
Рейтинг: 0 / 0
27.01.2014, 18:29
    #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
27.01.2014, 20:37
    #38539681
nnezam
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
pation,

как создать класс БО более или менее понятно.
На основе чего создать коллекцию БО? Вот в чем суть вопроса.)
...
Рейтинг: 0 / 0
27.01.2014, 20:42
    #38539686
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
Всё это обобщение справочников - от лукавого.
...
Рейтинг: 0 / 0
27.01.2014, 20:48
    #38539695
nnezam
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
Я правильно понимаю, что берем и для каждого, например, справочника ваяем свой класс коллекции элементов?
Дело в том, что в получившихся классах коллекций ( наследники от BindingList<Dict1>) много одинакового кода...
Лень - это же двигатель прогресса)) Вот и хочется что то придумать изящное...
...
Рейтинг: 0 / 0
27.01.2014, 21:43
    #38539713
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
МСУВсё это обобщение справочников - от лукавого. во-во! +100. А потом будет для каждого справочника по костылю). и в итоге будет супер код с кучей if-else.
...
Рейтинг: 0 / 0
28.01.2014, 06:17
    #38539906
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
МСУВсё это обобщение справочников - от лукавого. Нет! :-)
...
Рейтинг: 0 / 0
28.01.2014, 08:19
    #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
28.01.2014, 08:24
    #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
28.01.2014, 09:39
    #38540012
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
skyANA... говнокодом ...Странное у Вас отношение к результатам своей работы.
...
Рейтинг: 0 / 0
28.01.2014, 09:57
    #38540040
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
Алексей КskyANA... говнокодом ...Странное у Вас отношение к результатам своей работы.Здоровая само- и не только критика
...
Рейтинг: 0 / 0
28.01.2014, 10:18
    #38540071
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
Алексей КМСУВсё это обобщение справочников - от лукавого. Нет! :-)
А кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.
...
Рейтинг: 0 / 0
28.01.2014, 10:40
    #38540111
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
МСУА кто сказал, что идентификаторы должны быть интами?Я сказал! Поощарять бардак не собираюсь.
...
Рейтинг: 0 / 0
28.01.2014, 10:50
    #38540127
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
МСУА кто сказал, что идентификаторы должны быть интами? :) Может быть вперемешку и как угодно.

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

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

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

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

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

и объяснение гавноглавного кодера : в оракле нет интов
...
Рейтинг: 0 / 0
28.01.2014, 11:24
    #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
28.01.2014, 11:28
    #38540213
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон класса для представления справочников
pationpationпропущено...


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

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

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

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

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

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

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

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

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

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


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