public ScriptExportMonoArray(TypeReference type)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (!type.IsArray)
            {
                throw new Exception("Type isn't an array");
            }

            Type = type;

            TypeName = ScriptExportMonoType.GetTypeName(Type);
            Name     = ScriptExportMonoType.GetName(Type, TypeName);
            Module   = ScriptExportMonoType.GetModule(Type);
            FullName = ScriptExportMonoType.GetFullName(Type, Module);
        }
        public ScriptExportMonoGeneric(TypeReference type)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (!type.IsGenericInstance)
            {
                throw new Exception("Type isn't generic");
            }

            Type = (GenericInstanceType)type;

            TypeName = ScriptExportMonoType.GetTypeName(Type);
            Name     = ScriptExportMonoType.GetName(Type, TypeName);
            Module   = ScriptExportMonoType.GetModule(Type);
            FullName = ScriptExportMonoType.GetFullName(Type, Module);
        }