微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用nhibernate为通用选项类创建IUserType

如何解决使用nhibernate为通用选项类创建IUserType

|| 我正在寻找一种为选项类型类创建IUserType的方法。这是选项类型的类代码
public static class Option 
{
    public static Option<T> Some<T>(T value)
    {
        return new Option<T>(value);
    }

    public static Option<T> None<T>()
    {
        return new Option<T>();
    }
}
public class Option<T>
{
    public Option(T value)
    {
        _value = value;
        _isSome = true;
    }

    public Option()
    {
        _isSome = false;
    }

    T _value;
    bool _isSome;

    public bool IsSome
    {
        get { return _isSome; }
    }

    public bool IsNone
    {
        get { return !_isSome; }
    }

    public T Value
    {
        get { return _value; }
    }

    public T ValueOrDefault(T value)
    {
        if (IsSome)
            return Value;

        return value;
    }

    public override bool Equals(object obj)
    {
        var temp = obj as Option<T>;
        if (temp == null)
            return false;

        if (this.IsNone && temp.IsNone)
            return true;

        if (this.IsSome && temp.IsSome)
        {
            var item1 = this.Value;
            var item2 = temp.Value;
            return object.Equals(item1,item2);
        }

        return false;
    }

    public override int GetHashCode()
    {
        if (this.IsNone)
            return base.GetHashCode() + 23;

        return base.GetHashCode() + this.Value.GetHashCode() + 23;
    }
}
基本上,它只是用户想要的任何T类​​型的包装。它应该最终映射T的可为空的版本。我一直找不到有关执行此操作的任何文档。 任何帮助表示赞赏。     

解决方法

这是我用作IUserType类基础的一些文章: 在NHibernate中实现自定义类型 通用NHibernate用户类型基类 实施Money类型NHibernate     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。