示例#1
0
        /// <summary> 从指定的 Type 创建新的 JsonType 对象,该方法必须保证类型公开的构造函数有且只有一个
        /// </summary>
        public JsonType(Type type)
            : this(type, 0)
        {
            _ctor = Literacy.CreateNewObject(type);
            if (_ctor == null)
            {
                if (TypeInfo.IsSpecialType)
                {
                    return;
                }
                var ctors = type.GetConstructors();
                switch (ctors.Length)
                {
                case 0:
                    _ctor = args => {
                        throw new TypeInitializationException(TypesHelper.DisplayName(type),
                                                              new MissingMethodException("当前类型没有构造函数"));
                    };
                    break;

                case 1:
                    _ctor = Literacy.CreateNewObject(ctors[0]);
                    break;

                default:
                    _ctor = args => {
                        throw new TypeInitializationException(TypesHelper.DisplayName(type),
                                                              new MethodAccessException("构造函数调用不明确"));
                    };
                    break;
                }
            }
        }
示例#2
0
 /// <summary> 从指定的 Type 创建新的 JsonType 对象,并指定构造函数
 /// </summary>
 public JsonType(Type type, ConstructorInfo ctor)
     : this(type, 1)
 {
     if (ctor == null && TypeInfo.IsSpecialType)
     {
         return;
     }
     AreNull(ctor, "ctor");
     AreTrue(type == ctor.ReflectedType, "ctor不属于当前类型");
     _ctor = Literacy.CreateNewObject(ctor);
 }
示例#3
0
 /// <summary> 从指定的 Type 创建新的 JsonType 对象,并指定构造函数的参数
 /// </summary>
 public JsonType(Type type, Type[] ctorArgsType)
     : this(type, 2)
 {
     _ctor = Literacy.CreateNewObject(type, ctorArgsType);
     if (_ctor == null && TypeInfo.IsSpecialType)
     {
         return;
     }
     else
     {
         throw new ArgumentException("没有找到符合条件的构造函数");
     }
 }