C# 尝试实现策略模式时出现错误类异常(根据自己的Id进行区分)

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 ...') 如果您能帮我调试这个问题,我将不胜感激,因为我不明白为什么这样做行不通 不满意溶液 我可以

我正试图用Fluent Nhibernate实现战略模式,灵感来自

将引发以下异常:

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