/// <summary> /// Is overridden to define how the type reference is translated by this strategy. /// </summary> /// <param name="referencedType">Type reference that should be tranlated.</param> /// <param name="translator">Full translator that can be used to translate parts of the complete type reference.</param> /// <returns>Result of the translation.</returns> protected override TypeReferenceTranslationResult Translate(Type referencedType, ITypeReferenceTranslator translator) { var translatedTypeArguments = referencedType.GetGenericArguments().Select(translator.Translate); var referencedTypeName = referencedType.GetNameWithoutGenericTypeParameters() + $"<{ string.Join(", ", translatedTypeArguments.Select(x => x.ReferencedTypeName)) }>"; return(new TypeReferenceTranslationResult(referencedTypeName, CodeDependencies.FromCodeFragments(new[] { CodeFragmentId.ForClrType(referencedType.GetGenericTypeDefinition()) }) .Merge(translatedTypeArguments.Aggregate(CodeDependencies.Empty, (x, n) => x.Merge(n.Dependencies))))); }
/// <summary> /// Is overridden to define how the type reference is translated by this strategy. /// </summary> /// <param name="referencedType">Type reference that should be tranlated.</param> /// <param name="translator">Full translator that can be used to translate parts of the complete type reference.</param> /// <returns>Result of the translation.</returns> public TypeReferenceTranslationResult Translate(Type referencedType) => new TypeReferenceTranslationResult( referencedType.Name, CodeDependencies.FromCodeFragments(new[] { CodeFragmentId.ForClrType(referencedType) }));