2011-03-03 18 views
6

मैं निम्नलिखित करने की कोशिश:एक प्रकार से NHibernate.Type.itype कैसे प्राप्त करें?

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

केवल समस्या यह है कि इस विधि तीसरे पैरामीटर में NHibernate.Type.IType उम्मीद है, लेकिन ValueType प्रकार Type की है। मैं इसे आईट टाइप में कैसे परिवर्तित कर सकता हूं? किसी भी tipps sl3dg3

उत्तर

7

के लिए

Thx प्रयास करें निर्मित NHibernateUtil.GetSerializable() विधि। यह एक सीएलआर सिस्टम लेता है। टाइप करें और संबंधित आईटी टाइप करें। अधिक प्रलेखन: http://elliottjorgensen.com/nhibernate-api-ref/NHibernate/NHibernateUtil.html#M:NHibernate.NHibernateUtil.GetSerializable%28System.Type%29

+0

Thx, यह चाल है। – sl3dg3

+0

मैं उपयोग करने की कोशिश: 'mapper.Type ((IIdentifierType) NHibernateUtil.GetSerializable (typeof (DescribedEnumStringType )));' और फेंक देता है: ' प्रकार 'System.InvalidCastException' दाल में हुई एक अपवाद .dll लेकिन उपयोगकर्ता कोड में प्रबंधित नहीं किया गया था अतिरिक्त जानकारी: 'NHibernate.Type.SerialentableType' टाइप करने में असमर्थ 'NHibernate.Type.IIdentifierType' टाइप करने के लिए। ' भले ही 'DescribedEnumStringType ' आवश्यक' IIdentifierType' सदस्यों को ओवरराइड करता है –

1

आप NHibernate.NHibernateUtil सहायक वर्ग से फ़ील्ड/विधियों का उपयोग कर सकते हैं।

4

NHibernate.Type.TypeFactory.GetSerializableType() विधि देखें।

1

NHibernateUtil.GuessType विधि का उपयोग करें।

NHibernate.Type.IType type = NHibernateUtil.GuessType(typeof(T)); 
संबंधित मुद्दे