NHibernate AutoMap中用于组件的通用抽象类过滤器

本文关键字:抽象类 过滤器 组件 AutoMap 用于 NHibernate | 更新日期: 2023-09-27 18:10:34

我重写了NHibernate的DefaultAutomappingConfigurationIsComponent方法,以指定我的组件是实现通用抽象类的每个类,但不知道如何。

这是我的ValueObject基类:

public abstract class ValueObject<T> : IEquatable<T> where T : class

我想写一些类似的东西:

public override bool IsComponent(Type type)
    {
        return type.BaseType == ValueObject<T> where T : class;
    }

NHibernate AutoMap中用于组件的通用抽象类过滤器

您可以使用这个条件:

type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(ValueObject<>)

该条件将匹配基类型为泛型且其开放泛型版本为ValueObject<T>的所有类型