2011-03-03 41 views
6

我尽量做到以下几点:如何从类型获取NHibernate.Type.IType?

hibQuery.SetParameter("MyParameter", valueObject, valueType); 

唯一的问题是,这种方法需要在第三个参数NHibernate.Type.IType,但VALUETYPE是Type型。我怎么能把它转换成IType?

THX任何的窍门 sl3dg3

回答

7

尝试内置NHibernateUtil.GetSerializable()方法。它需要一个CLR System.Type并返回相应的IType。更多文档:http://elliottjorgensen.com/nhibernate-api-ref/NHibernate/NHibernateUtil.html#M:NHibernate.NHibernateUtil.GetSerializable%28System.Type%29

+0

Thx,这没有把戏。 – sl3dg3 2011-03-03 15:57:59

+0

我尝试使用: 'mapper.Type((IIdentifierType)NHibernateUtil.GetSerializable(typeof运算(DescribedEnumStringType )));' 和它抛出: ' '' 类型发生在DAL的例外.dll但未在用户代码中处理 其他信息:无法转换类型'NHibernate.Type.SerializableType'的对象以键入'NHibernate.Type.IIdentifierType'。 ' 即使'DescribedEnumStringType '确实会覆盖必要的'IIdentifierType'成员 – 2016-12-06 15:40:39

1

您可以使用NHibernate.NHibernateUtil帮助程序类中的字段/方法。

4

检查出NHibernate.Type.TypeFactory.GetSerializableType()方法。

1

使用NHibernateUtil.GuessType方法。

NHibernate.Type.IType type = NHibernateUtil.GuessType(typeof(T));