//---------------------------------------------------------------------- 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 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); }
//---------------------------------------------------------------------- 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])); }