请考虑下面简单的例子:
public class Foo
{
public virtual int Id { get; protected set; }
public virtual IBar Bar { get; set; }
}
public interface IBar
{
string Text { get; set; }
}
public class Bar : IBar
{
public virtual string Text { get; set; }
}
而流利,NHibernate的地图类:
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
Id(x => x.Id);
Component(x => x.Bar, m =>
{
m.Map(x => x.Text);
});
}
}
当运行与配置进行任何查询,我得到下面的异常:
NHibernate.InstantiationException:“不能实例化抽象类或接口:NHMappingTest.IBar”
看来,NHibernate的尝试实例化IBar
对象代替的Bar
具体类。 如何让流利,NHibernate的知道什么时候该属性返回一个接口或抽象基类实例化哪个具体类?
编辑:显式写指定成分的种类Component<Bar>
(由狡猾的建议)没有任何作用,会导致发生相同的异常。
EDIT2:由于vedklyv和保罗·巴图姆:这样的映射应该很快 成为可能 。