コード例 #1
0
 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;
     }
 }
コード例 #2
0
ファイル: TypeBinder.cs プロジェクト: zmp2000/nhibernate-core
        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);
        }