
Alexander
03.04.2017
15:24:32

tm
03.04.2017
15:24:36
А что она делает тогда, прости?

Andrew
03.04.2017
15:24:54

Ilya
03.04.2017
15:25:30
если бы фабрика могла выбирать тип по заголовку, то в ней были бы захаркодены правила для каждого из типов

Google

Максим
03.04.2017
15:26:04

Ilya
03.04.2017
15:26:12
что то типа, if(Header.Contains("Order") return new Order();
правила в словаре?
что то не похоже на правила

Andrew
03.04.2017
15:26:39
так ты можешь компаратор заодно с классом инжектить

tm
03.04.2017
15:26:46
Надоело
Пойду напишу гист

Ilya
03.04.2017
15:27:07
ОМГ! 2 класса, нахрена огород?

Максим
03.04.2017
15:27:40

Ilya
03.04.2017
15:27:53
я конечно понимаю, что через 20 итераций оно будет круто, но уже через 5 оно будет работать по другому

Максим
03.04.2017
15:28:13

Ilya
03.04.2017
15:28:45
отлично! а как создать элемент, когда тебе пришел текст заголовка: "Order #12229 от Васи"?

Максим
03.04.2017
15:29:01

Google

Максим
03.04.2017
15:30:35
короче на десяти классах можно и свич-кейсом сделать. и не парить мозг.

Ilya
03.04.2017
15:30:56
вот и я о том же

Andrew
03.04.2017
15:31:08
это как?
сделай словарь <Func..., Type> или лист из tupple<Func, Type>, получил мессэдж, прогнал коллекцию, когда Func вернул тру, то либо рефлексией, либо из пула дёрнул экземпляр Type и выдал запрашивающему, ну и соответственно все типы реализуют один интерфейс, чтоб не кастить
скорость выборки правд O(n)
но можн чё подумать ещё, как колдунство ускорить

Ilya
03.04.2017
15:32:10

Максим
03.04.2017
15:32:49

Ilya
03.04.2017
15:33:25
не уверен

Максим
03.04.2017
15:33:38

Andrew
03.04.2017
15:33:52

Ilya
03.04.2017
15:34:04

Максим
03.04.2017
15:35:09
ищем вхождение ключа в теме письма. не?
foreach( mail in recieved_mails)

Ilya
03.04.2017
15:35:45
то есть цикл?
и тогда фабрика будет знать как происходит выбор
а это не круто совсем

tm
03.04.2017
15:36:29
https://gist.github.com/tmteam/96e702b58e7c650232ecb7fb7c139c07
Вот

Максим
03.04.2017
15:36:46
foreach( key in dict) if (substring(mail.theme, key) == 1 ) exec dict[key]

Google

tm
03.04.2017
15:37:24

Максим
03.04.2017
15:38:25
where T: IMailHandler, new() это не понял

Andrew
03.04.2017
15:39:27
foreach( mail in recieved_mails)
говрят тебе, циклом в фабрике компараторы гоняй
`
foreach(var comparator in comparators){
if(comparator(message){
// do something
}
}

Максим
03.04.2017
15:39:59
это я и хотел. написал класс, добавил строчку и все работает ))) спасибо.

tm
03.04.2017
15:40:16
Тоесть можно сделать Registrate<T?func<> predicate)

Andrew
03.04.2017
15:40:59

Владимир
03.04.2017
15:41:00

Максим
03.04.2017
15:41:51

tm
03.04.2017
15:41:59

Максим
03.04.2017
15:43:10

Vladimir Bondaryuk
03.04.2017
15:52:00

Дмитрий
03.04.2017
15:52:32
Может кто класс поглядеть, я в нем интероп использовал и диспоз реализовал
А то он хуйню творит

Ilya
03.04.2017
15:52:40
вот простейший вариант решения, который тебе подойдёт
https://dotnetfiddle.net/LUZ0bO
когда будет больше информации о задаче - можно отделить логику парсинга
добавить регистрации или ещё что нить

Дмитрий
03.04.2017
15:53:30
То файл экплорер вызовер для сейва, то перезапишет, то эксепшн кинет, то в не освободит ресурсы

Google

Ilya
03.04.2017
15:53:34
но в данный момент - это лишнее

Vladimir Bondaryuk
03.04.2017
15:55:04

Ilya
03.04.2017
15:55:05
если сделать регистрации по предикату - то тебе надо будет 2 раза парсить всё, потому что логика парсинга будет разбирать текст письма и во время конструирования типа будет происходить разбор

Максим
03.04.2017
15:55:10

Ilya
03.04.2017
15:55:20
можно зашить любую логику выбора типа письма
и можно за 1 проход по тексту решить что это заказ и распарсить его
самое главное сейчас - когда нет информации о предментной области - сделать понятный и гибкий вариант, когда что то прояснится, можно что то переделать - оптимизировать или ввести новые интерфейсы, но в данный момент - то что нужно, по моему мнению

Admin
ERROR: S client not available

Максим
03.04.2017
16:03:12
а какая нужна информация о предметной области? у меня есть файлы писем в формате msg, мне надо такие же письма забрать с ящика, распарсить и вернуть клиенту класс с данными.
структура писем не меняется
тема не меняется

Axm
03.04.2017
16:04:14

Дмитрий
03.04.2017
16:09:44
Никто не посмотрит?)

Igor
03.04.2017
16:12:28

Дмитрий
03.04.2017
16:13:01
pastebin.com/03GQjAGb

Ilya
03.04.2017
16:19:20

Максим
03.04.2017
16:21:53

Ilya
03.04.2017
16:24:27
вот, пихай всё это в TryCreate и будет теье счастье, потому что когда у тебя будет 7 типов сообщений, парсинг усложнится, если понадобится добавишь регистрации или ещё каких плюшек

Дмитрий
03.04.2017
16:26:28
С drop down в interop excel работал кто?

Google

Ilya
03.04.2017
16:26:29

Дмитрий
03.04.2017
16:26:43
Как selected установить?
В нем может быть проблема? Иди он просто не нужен?

Ilya
03.04.2017
16:28:15
pastebin.com/03GQjAGb
ты уверен, что это ок?
var newWorkSheet = (Worksheet)_workbook.Worksheets.Item[1];
_worksheets.Add(newWorkSheet);

Дмитрий
03.04.2017
16:31:42
не уверен на самом деле
увидел в 2 местаз
местах*

Ilya
03.04.2017
16:32:25
выглядит очень странно, не работал с excell, но какой то диссонанс

Дмитрий
03.04.2017
16:33:19
а мне показалось, что норм выглядит. Типа уже есть по дефолту одна таблица в книге и ее берем

Ilya
03.04.2017
16:35:09
а зачем одну и туже таблицу добавлять в список?

Дмитрий
03.04.2017
16:35:32
это внешний список же, просто для себя
а на ретурне стоит new которая

Ilya
03.04.2017
16:36:06
(Worksheet)_workbook.Worksheets.Item[1];
тут нет new

Дмитрий
03.04.2017
16:36:31
var newWorkSheet = (Worksheet)_workbook.Worksheets.Item[1]; - берем дефолтную
_worksheets.Add(newWorkSheet); - кидаем в свой, левый массив

Ilya
03.04.2017
16:36:50
и добавляем её в список

Дмитрий
03.04.2017
16:36:52
return newWorkSheet; - возвращаем ту самую дефолнтую
вторую строку вообще убрать можно
Эта группа больше не существует