如何使用自定义词典类进行DynamicComponent映射

时间:2011-11-04 10:49:55

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

我喜欢为我的DynamicComponent映射使用自定义IDictionary类:

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 :(得分:0)

如果您的自定义词典有一个包含数据的内部词典,那么您可以

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));
    })
);