public void Type(System.Type persistentType, object parameters) { if (persistentType == null) { throw new ArgumentNullException("persistentType"); } if (!typeof(IUserType).IsAssignableFrom(persistentType) && !typeof(IType).IsAssignableFrom(persistentType) && !typeof(ICompositeUserType).IsAssignableFrom(persistentType)) { throw new ArgumentOutOfRangeException("persistentType", "Expected type implementing IUserType, ICompositeUserType or IType."); } if (parameters != null) { propertyMapping.type1 = null; var hbmType = new HbmType { name = persistentType.AssemblyQualifiedName, param = (from pi in parameters.GetType().GetProperties() let pname = pi.Name let pvalue = pi.GetValue(parameters, null) select new HbmParam { name = pname, Text = new[] { ReferenceEquals(pvalue, null) ? "null" : pvalue.ToString() } }) .ToArray() }; propertyMapping.type = hbmType; } else { propertyMapping.type1 = persistentType.AssemblyQualifiedName; propertyMapping.type = null; } }
public void Bind(HbmType typeMapping) { if (typeMapping == null) { // will find the type through reflection return; } string originalTypeName = typeMapping.name; if (originalTypeName == null) { return; } var parameters = new Dictionary <string, string>(); if (typeMapping.param != null) { System.Array.ForEach(typeMapping.param, p => parameters[p.name] = p.Text.LinesToString()); } BindThroughTypeDefOrType(originalTypeName, parameters); }