Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что лучше - dynamic или конкретный тип? / 11 сообщений из 11, страница 1 из 1
21.10.2013, 13:12
    #38435394
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
У меня такое ощущение, что я пытаюсь использовать dynamic не для того, для чего его придумали.

Вобщем, есть выборка

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
this.MyCollection =
    obj.Items
    .Select(i => new
    {
      ...
    })
    .ToList()
    .AsReadOnly();



Поскольку я использовал анонимный тип, то непонятно, как это представить в свойстве, которому я хочу присвоить эту коллецию. Решил сделать так

Код: c#
1.
public IReadOnlyCollection<dynamic> MyCollection { get; set; }


По типу коллеции не заморачивайтесь. Вопрос - можно ли так сделать с генерик-типом и хорошо ли это? Может, это настолько плохо, что лучше придумать для этого типа отдельный тип? Но мне надоело на каждый чих делать по типу, который нужен только для того, чтобы временно подержать в себе объекты, пока их представление рассуёт по контролам. Думал, что анонимные типы от этого избавляют.
...
Рейтинг: 0 / 0
21.10.2013, 13:26
    #38435424
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
user7320,

не используй анонимный тип, используй не анонимный
...
Рейтинг: 0 / 0
21.10.2013, 13:37
    #38435451
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
Вот и я тоже попытался сейчас передать этот анонимный через дайнэмик в представление - а он заругался, что "у типа Object нет таких полей". Похоже, анонимные удобны только для того, чтобы после извлечения их тут же использовать без всяких передач... Надо ещё раз прочитать про анонимные и дженерики.

Но всё же, как вы избавляетесь от нужды постоянно писать простенькие типы для каждого пустякового извлечения по типу, как я выше написал? Или никак и каждый раз пишете простенький тип?
...
Рейтинг: 0 / 0
21.10.2013, 13:38
    #38435455
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
user7320Но всё же, как вы избавляетесь от нужды постоянно писать простенькие типы для каждого пустякового извлечения по типу, как я выше написал? Или никак и каждый раз пишете простенький тип?
Tuple
...
Рейтинг: 0 / 0
21.10.2013, 13:39
    #38435459
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
user7320как вы избавляетесь от нужды постоянно писать простенькие типы
Кортеж - Tuple.
...
Рейтинг: 0 / 0
21.10.2013, 13:51
    #38435486
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
Да, кортеж, конечно, в этом случае решает, но содержит другой недостаток - имена свойств у него неинформативные: Item1, Item2,... А у анонимных типов - информативные. Есть способ это обойти?
...
Рейтинг: 0 / 0
21.10.2013, 14:01
    #38435509
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
Итого:

1) конкретные типы:

плюсы :

инофрмативные имена свойств;
могут легко работать с обобщёнными коллекциями;

минусы :

нужно выписывать определения таких типов на каждый чих;

2) анонимные типы:

плюсы :

информативные имена свойств;
не нужно выписывать определения;

минусы :

фиг знает, как работать с ними в обобщённых коллекциях;

3) кортежи:

плюсы :

не нужно выписывать определения;
могут легко работать с обобщёнными коллекциями;

минусы :

неинформативные имена свойств;
ограниченное число свойств.


А мне надо минимум:

могут легко работать с обобщёнными коллекциями;
информативные имена свойств;
не нужно выписывать определения.
...
Рейтинг: 0 / 0
21.10.2013, 14:08
    #38435519
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
user7320Да, кортеж, конечно, в этом случае решает, но содержит другой недостаток - имена свойств у него неинформативные: Item1, Item2,... А у анонимных типов - информативные. Есть способ это обойти?
Сменить язык. В языках с паттерн-матчингом - F#, Nemerle - можно использовать туплы, при этом благодаря ПМ всё будет информативно.
...
Рейтинг: 0 / 0
21.10.2013, 14:35
    #38435567
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
user7320,
так анонимные типы, для места извлечения, хотя и можно их получать снаружи, но это уже из курьезов
Код: c#
1.
public IReadOnlyCollection<T> GetMyCollection (T t)
...
Рейтинг: 0 / 0
21.10.2013, 15:07
    #38435639
Roslyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
анонимные типы используются в контексте одного метода. в твоем случае лучше не лениться и написать отдельный тип для элементов коллекции
...
Рейтинг: 0 / 0
21.10.2013, 15:25
    #38435681
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше - dynamic или конкретный тип?
Где-то в степиuser7320,
так анонимные типы, для места извлечения, хотя и можно их получать снаружи, но это уже из курьезов
Код: c#
1.
public IReadOnlyCollection<T> GetMyCollection (T t)


Я забыл добавить, что писать что-то своё - это минус. Ну, это можно считать за "нужно выписывать определение". ))

Ладно, пока я успокоился на выписывании своего простенького типа.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что лучше - dynamic или конкретный тип? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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