映射到受保护集合的NHibernate字节码

映射到受保护集合的NHibernate字节码,nhibernate,mapping,nhibernate-mapping,protected,mapping-by-code,Nhibernate,Mapping,Nhibernate Mapping,Protected,Mapping By Code,我试图(通过代码)将一个受保护的收藏映射到一个包,但我很挣扎。e、 g public class MyClass { .... protected virtual ICollection<Items> MyItems { get; set; } .... } public class MyClassMapping : ClassMapping<MyClass> { ... Bag(x => x.MyItems, map =&

我试图(通过代码)将一个受保护的收藏映射到一个包,但我很挣扎。e、 g

public class MyClass
{
    ....
    protected virtual ICollection<Items> MyItems { get; set; }
    ....
}

public class MyClassMapping : ClassMapping<MyClass>
{
    ...
    Bag(x => x.MyItems, map =>
    {
        ....
    }
    ...
}
公共类MyClass
{
....
受保护的虚拟ICollection MyItems{get;set;}
....
}
公共类MyClassMapping:类映射
{
...
行李(x=>x.MyItems,地图=>
{
....
}
...
}
它抛出一个映射异常,内部异常为“ArgumentNullException:值不能为null。参数名称:localMember”。如果“MyItems”集合是公共的,则可以正常工作

我遵循了这篇文章(),它建议使用接受字符串的方法重载

public class MyClassMapping : ClassMapping<MyClass>
{
    ...
    Bag("MyItems", map =>
    {
        ....
    }
    ...
}
公共类MyClassMapping:ClassMapping { ... 袋子(“我的物品”,地图=> { .... } ... } 但这会产生一个编译错误“无法从用法推断出方法…的类型参数。请尝试显式指定类型参数”

是否可以映射到受保护的集合(我使用的是NH3.3)?有人能给我举个例子吗

谢谢,
Chet

我们可以在这里看到重载方法:

解决方案:我们要做的是像这样声明映射

// the TElement must be expressed explicitly as Items
Bag<Items>("MyItems", map =>
{
    ....
}
//远程通讯必须明确表示为项
袋子(“我的物品”,地图=>
{
....
}

Hi Radmin,我刚刚验证了这一点,非常感谢。很高兴看到这一点。享受NHibernate;)
// TElement is Items
protected virtual ICollection<Items> MyItems { get; set; }
// the TElement must be expressed explicitly as Items
Bag<Items>("MyItems", map =>
{
    ....
}