コード例 #1
0
 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));
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
 public static bool IsNullable(ITypeSymbol type)
 {
     return(type.Name.Equals(nameof(Nullable), StringComparison.Ordinal) &&
            type.GenericTypeArguments().Length == 1 &&
            "System".Equals(GetNamespace(type), StringComparison.Ordinal));
 }
コード例 #5
0
 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));
 }
コード例 #6
0
 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));
 }
コード例 #7
0
 public static bool IsVoid(ITypeSymbol type)
 {
     return(type.Name.Equals("Void", StringComparison.Ordinal) &&
            type.GenericTypeArguments().Length == 0 &&
            "System".Equals(GetNamespace(type), StringComparison.Ordinal));
 }