Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
public class myClass : anotherClass<myClass>
{}


Зачем это?
26 апр 18, 10:47    [21370219]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19439
Нормально для иерархических конструкций
26 апр 18, 10:57    [21370258]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Shocker.Pro
Нормально для иерархических конструкций


Практический смысл этого - какой?
26 апр 18, 11:01    [21370274]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19439
Слушай, ну ты задал абстрактный вопрос, поэтому можешь получить только абстрактный ответ

Может быть например так:
class anotherClass<T>
{
  public List<T> Children;

  ... maintenance methods
}
тем самым anotherClass обеспечивает построение дерева классов T
26 апр 18, 11:20    [21370319]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Shocker.Pro
тем самым anotherClass обеспечивает построение дерева классов T


Обеспечивает этот функционал для myClass?
26 апр 18, 11:27    [21370337]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19439
Необязательно, может и для внешних потребителей.
26 апр 18, 11:41    [21370387]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Shocker.Pro
Необязательно, может и для внешних потребителей.


В моём примере.
26 апр 18, 12:10    [21370499]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19439
В смысле - без реализации?
26 апр 18, 12:15    [21370517]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2350
Агнец за бортом
Практический смысл этого - какой?

Например (GenericEnum=anotherClass)
26 апр 18, 14:37    [21371044]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
hVostt
Member

Откуда:
Сообщений: 14918
Агнец за бортом
public class myClass : anotherClass<myClass>
{}



Зачем это?


Это CRTP (Curiously Recurring Template Pattern)

Читайте на хабре

https://habr.com/post/211743/


Читайте у Эрика Липперта

https://blogs.msdn.microsoft.com/ericlippert/2011/02/03/curiouser-and-curiouser/
26 апр 18, 15:12    [21371183]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
hVostt
Member

Откуда:
Сообщений: 14918
Shocker.Pro
Нормально для иерархических конструкций


Нормально для fluent chaning builders
26 апр 18, 15:14    [21371192]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
hVostt
Это CRTP (Curiously Recurring Template Pattern)


Ну ты и череп.
26 апр 18, 15:57    [21371391]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
И у Эрика же.

My advice is to think very hard before you implement this sort of curious pattern in C#; do the benefits to the customer really outweigh the costs associated with the mental burden you're placing on the code maintainers?

Я как увидел - подумал, что это вызов el diablo.
26 апр 18, 16:08    [21371416]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Но вообще интересный приём.

Именно для fluent.
26 апр 18, 16:15    [21371432]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
А если так:

class dbEntity: repository<dbEntity>{
}


Это считается нормальным?
27 апр 18, 11:20    [21373046]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 2975
Агнец за бортом,

зачем в классе сущности реализовывать репозиторий?
мухи от котлет должны быть отдельно, в файле сущности БД не должно быть ничего кроме свойств и метаданных.
а репозиторий должен уметь взаимодействовать с любой сущностью через обощение. если уж вы делайте свой слой взаимодействия с БД.
Когда концепция ООП соблюдается, классы занимают не более 100 строк, каждый класс выполняет свою функцию.
Даже с точки экономии памяти, ваш подход избыточен. Я бы на 3ечку оценил :) не обижайтесь.
невсегда вообще имеет смысл делать это самому, всё это уже написано 1000 раз и есть лучшие варианты из этой 1000
27 апр 18, 11:28    [21373077]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Roman Mejtes
Я бы на 3ечку оценил :) не обижайтесь.


Дружище, я не в свой код смотрю. O_O
27 апр 18, 11:48    [21373191]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Агнец за бортом
Roman Mejtes
Я бы на 3ечку оценил :) не обижайтесь.


Дружище, я не в свой код смотрю. O_O


И мне несколько диковато. В кого не ткни, все ножку отставляют и принципы SOLID задом неперёд пересказать могут, а как в код посмотришь...
27 апр 18, 11:58    [21373252]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35289
Агнец за бортом
А если так:

class dbEntity: repository<dbEntity>{
}



Это считается нормальным?

Все относительно)
В пркладном коде не нормально, т.к. внутри EF уже есть репозитарий.
27 апр 18, 11:58    [21373253]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 2975
Petro123,

EF не всегда хороший выбор, когда нужна высокая произодительность в высоко нагруженных системах, мне кажется EF не самый удачный выбор. Но никогда не мешает комбинировать подходы, но сильно их не запутывать
27 апр 18, 12:04    [21373288]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Petro123
т.к. внутри EF уже есть репозитарий.


То, что там есть - недостаточно. proof of concept - не более.
27 апр 18, 12:05    [21373295]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1033
Roman Mejtes
но сильно их не запутывать


И-эх, а я ведь самую безделицу затронул
27 апр 18, 12:05    [21373298]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35289
Roman Mejtes
EF не всегда хороший выбор,

Конечно.
Тут главное, что такой заумный код внутри Любой билиотеки.
А не снаружи по проекту.
Первый пример например в linq. Чтобы через точку компактно писать.
Второй пример в МойОРМ.
27 апр 18, 12:14    [21373347]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35289
Агнец за бортом
Petro123
т.к. внутри EF уже есть репозитарий.


То, что там есть - недостаточно. proof of concept - не более.

Это либа а не икона. Выбирай по вкусу.
27 апр 18, 12:15    [21373355]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
hVostt
Member

Откуда:
Сообщений: 14918
Агнец за бортом
А если так:

class dbEntity: repository<dbEntity>{
}



Это считается нормальным?


Active Record? )
27 апр 18, 12:39    [21373453]     Ответить | Цитировать Сообщить модератору
 Re: Что означает такое объявление класса?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25702
Агнец за бортом
А если так:

class dbEntity: repository<dbEntity>{
}



Это считается нормальным?
Покажи код repository.

А если плясать от шаблона Repository, то это не нормально :)
30 апр 18, 09:54    [21379529]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / WinForms, .Net Framework Ответить