public SerializableArguement(System.Type type) { if (type.IsSubclassOf(typeof(UnityEngine.Object))) { _serializeType = ArguementSerializeType.Object; _string = type.AssemblyQualifiedName; } else if (type.IsEnum) { _serializeType = ArguementSerializeType.Enum; _string = type.AssemblyQualifiedName; } else { if (_typeToSerializeType.ContainsKey(type)) { _serializeType = _typeToSerializeType[type]; ArgTypeMeta argTypeMeta = GetTypeMeta(_serializeType); object defaultValue = null; if (type.IsValueType) { defaultValue = System.Activator.CreateInstance(type); } argTypeMeta.onAssignValue(this, defaultValue); } else { throw new System.NotImplementedException("unsupport type:" + type); } } }
private static ArgTypeMeta GetTypeMeta(ArguementSerializeType serializeType) { ArgTypeMeta result = null; _serializeTypeToMeta.TryGetValue(serializeType, out result); return(result); }