Как использовать пользовательский словарный класс для сопоставления DynamicComponent - PullRequest
0 голосов
/ 04 ноября 2011

Мне нравится использовать пользовательский класс IDictionary для моих сопоставлений DynamicComponent:

class ObservableDictionary : Hashtable, INotifyCollectionChanged, INotifyPropertyChanged

при отображении списков можно использовать пользовательский тип коллекции следующим образом:

mapping.HasMany(x => x.Items).CollectionType<ObservableCollection<ItemClass>>();

Но как я могу сделать это с DynamicComponents? Метод CollectionType отсутствует.

mapping.DynamicComponent(
    x => x.DynamicFields,
    c => {
            c.Map(x => x["fld_num"]).CustomType(typeof(int));
            c.Map(x => x["shortdesc"]).CustomType(typeof(string));
         });

1 Ответ

0 голосов
/ 07 ноября 2011

если ваш пользовательский словарь имеет внутренний словарь, содержащий данные, то вы можете

mapping.Component(x => x.DynamicFields, c => c.DynamicComponent(
    Reveal.Member<CustomDictionary, IDictionary>("_innerDictionary"),
    c => {
        c.Map(x => x["fld_num"]).CustomType(typeof(int));
        c.Map(x => x["shortdesc"]).CustomType(typeof(string));
    })
);
...