C# 尝试实现策略模式时出现错误类异常(根据自己的Id进行区分)
我正试图用Fluent Nhibernate实现战略模式,灵感来自 将引发以下异常:C# 尝试实现策略模式时出现错误类异常(根据自己的Id进行区分),c#,nhibernate,design-patterns,fluent-nhibernate,C#,Nhibernate,Design Patterns,Fluent Nhibernate,我正试图用Fluent Nhibernate实现战略模式,灵感来自 将引发以下异常: NHibernate.WrongClassException: Object with id: f1cf041b ... was not of the specified subclass: Namespace.Strategy (Discriminator was: 'f1cf041b ...') 如果您能帮我调试这个问题,我将不胜感激,因为我不明白为什么这样做行不通 不满意溶液 我可以
NHibernate.WrongClassException:
Object with id: f1cf041b ...
was not of the specified subclass: Namespace.Strategy
(Discriminator was: 'f1cf041b ...')
如果您能帮我调试这个问题,我将不胜感激,因为我不明白为什么这样做行不通
不满意溶液 我可以通过不区分Id列(并创建另一列来区分)来让代码正常工作,但我发现这并不令人满意,因为这意味着重复数据
为什么? 这背后的原因是,新的
策略
s将能够通过插件架构创建(提供在应用程序加载时读取的策略
和子类映射
的实现),因此,我需要使用Guid
s,这样就不会与Id发生冲突。似乎在策略类中,您使用的是Guid
类型的Id
但是在映射器类中,使用了string
而不是Guid
我如下所述更改了map类,异常不再出现
public class MyStrategyMap : SubclassMap<MyStrategy>
{
public MyStrategyMap()
{
this.DiscriminatorValue(new Guid("F1CF041B ..."));
}
}
公共类MyStrategyMap:子类映射
{
公共MyStrategyMap()
{
这个.DiscriminatorValue(新的Guid(“F1CF041B…”));
}
}
+50:全绿色!真不敢相信我错过了。谢谢
NHibernate.WrongClassException:
Object with id: f1cf041b ...
was not of the specified subclass: Namespace.Strategy
(Discriminator was: 'f1cf041b ...')
public class MyStrategyMap : SubclassMap<MyStrategy>
{
public MyStrategyMap()
{
this.DiscriminatorValue(new Guid("F1CF041B ..."));
}
}