public static bool IsValueTuple(ITypeSymbol type) { return(type.IsTupleType && type.Name.Equals(nameof(ValueTuple), StringComparison.Ordinal) && type.GenericTypeArguments().Length > 0 && "System".Equals(GetNamespace(type), StringComparison.Ordinal)); }
private static void GetServiceGenericEnding(ITypeSymbol serviceType, IList <string> result) { var args = serviceType.GenericTypeArguments(); for (var i = 0; i < args.Length; i++) { var type = args[i]; if (type is IArrayTypeSymbol array) { var(elementType, prefix) = ExpandArray(array); type = elementType; if (array.Rank > 1) { prefix += array.Rank.ToString(CultureInfo.InvariantCulture); } result.Add(prefix + GetDataContainerName(type)); } else { result.Add(GetDataContainerName(type)); } GetServiceGenericEnding(type, result); } }
public static bool IsTask(ITypeSymbol type) { if (type.GenericTypeArguments().Length > 1) { return(false); } return(("Task".Equals(type.Name, StringComparison.Ordinal) || "ValueTask".Equals(type.Name, StringComparison.Ordinal)) && "System.Threading.Tasks".Equals(GetNamespace(type), StringComparison.Ordinal)); }
public static bool IsNullable(ITypeSymbol type) { return(type.Name.Equals(nameof(Nullable), StringComparison.Ordinal) && type.GenericTypeArguments().Length == 1 && "System".Equals(GetNamespace(type), StringComparison.Ordinal)); }
public static bool IsAsyncEnumerable(ITypeSymbol type) { return(type.GenericTypeArguments().Length == 1 && "IAsyncEnumerable".Equals(type.Name, StringComparison.Ordinal) && "System.Collections.Generic".Equals(GetNamespace(type), StringComparison.Ordinal)); }
public static bool IsValueTask(this ITypeSymbol type) { return(type.GenericTypeArguments().Length < 2 && "ValueTask".Equals(type.Name, StringComparison.Ordinal) && "System.Threading.Tasks".Equals(GetNamespace(type), StringComparison.Ordinal)); }
public static bool IsVoid(ITypeSymbol type) { return(type.Name.Equals("Void", StringComparison.Ordinal) && type.GenericTypeArguments().Length == 0 && "System".Equals(GetNamespace(type), StringComparison.Ordinal)); }