private string HandleSubclassTypeNameHint(string typeNameHint) { var sections = typeNameHint.Split("."); var typeName = sections[sections.Length - 1].Split("+").Last(); var @namespace = sections[sections.Length - 2]; var typeNameInfo = new ModelNameWithNamespaceInfo(@namespace, typeName); _typeNameHintsModelNameWithNamespaceInfos.Add(typeNameHint, typeNameInfo); return(typeNameInfo.FullName); }
private string HandleGenericTypeNameHint(string genericTypeNameHint) { if (!genericTypeNameHint.Contains("`1")) { throw new InvalidOperationException("Generics with more then one generic argument are not supported."); } // generics are looks like AwardsCms.Web.Admin.Api.Pagination.PagingResponse`1[[AwardsCms.Web.Admin.Api.Models.Invoice.BillingLineItemListItemModel, AwardsCms.Web.Admin.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] var genericTypeAndGenericArgumentSections = genericTypeNameHint.Split("`1[["); var genericArgumentType = genericTypeAndGenericArgumentSections.Last().Split(",").First(); var genericArgumentTypeSections = genericArgumentType.Split("."); var genericArgumentTypeNamespace = genericArgumentTypeSections[genericArgumentTypeSections.Length - 2]; var genericTypeSections = genericTypeAndGenericArgumentSections.First().Split("."); var genericTypeName = genericTypeSections.Last(); var typeNameInfo = new ModelNameWithNamespaceInfo(genericArgumentTypeNamespace, genericTypeName + genericArgumentTypeSections.Last()); _typeNameHintsModelNameWithNamespaceInfos.Add(genericTypeNameHint, typeNameInfo); return(typeNameInfo.FullName); }