//----------------------------------------------------------------------
 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);
 }
    //----------------------------------------------------------------------
    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]));
    }
Exemplo n.º 3
0
    //----------------------------------------------------------------------
    static bool CanSerialiseGenericList(System.Type _type)
    {
        if (!SUPPORT_LISTS)
        {
            return(false);
        }

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

        if (parameters.Length > 1)
        {
            return(false);
        }
        var param = !parameters[0].IsEnum ? parameters[0] : typeof(System.Enum);

        return(UnitySerialiseFieldByType.ContainsKey(param));
    }