コード例 #1
0
 //----------------------------------------------------------------------
 static object CreateDefaultObject(System.Type type)
 {
     if (type.IsValueType)
     {
         return(Activator.CreateInstance(type));
     }
     if (CanSerialiseEnumerable(type))
     {
         var elementType = type.IsArray ? type.GetElementType() : type.GetGenericArguments()[0];
         return(Activator.CreateInstance(typeof(List <>).MakeGenericType(new Type[] { elementType })));
     }
     return(null);
 }
コード例 #2
0
 //----------------------------------------------------------------------
 static object CreateDefaultObject(System.Type type)
 {
     if (type.IsValueType)
     {
         return((object)System.Activator.CreateInstance(type));
     }
     if (CanSerialiseGenericList(type) && SUPPORT_LISTS)
     {
         return((object)System.Activator.CreateInstance(typeof(List <>).MakeGenericType(new Type[] { type })));
     }
     if (CanSerialiseArray(type))
     {
         return((object)System.Array.CreateInstance(type.GetElementType(), 0));
     }
     return(null);
 }
コード例 #3
0
    //----------------------------------------------------------------------
    static bool CanSerialiseEnumerable(System.Type _type)
    {
        //array
        if (_type.IsArray)
        {
            return(CanSerialiseType(_type.GetElementType()));
        }

        //list<T>
        if (!_type.IsGenericType || _type.GetGenericTypeDefinition() != typeof(List <>))
        {
            return(false);
        }
        var parameters = _type.GetGenericArguments();

        if (parameters.Length > 1)
        {
            return(false);
        }
        return(CanSerialiseType(parameters[0]));
    }