Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / TypeNameHelper.cs / 1305376 / TypeNameHelper.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation { using System; using System.Globalization; using System.Text; using System.Text.RegularExpressions; internal static class TypeNameHelper { // note: does not work for nested type when fullName is false public static string GetDisplayName(Type type, bool fullName) { if (type == null) { return string.Empty; } if (type.IsGenericParameter) { return type.Name; } if (!type.IsGenericType && !type.IsArray) { if (fullName) { return type.FullName; } else { return type.Name; } } // replace `2 withRegex regex = new Regex("`[0-9]+"); GenericsMatchEvaluator evaluator = new GenericsMatchEvaluator(type.GetGenericArguments(), fullName); // Remove [[fullName1, ..., fullNameX]] string name; if (fullName) { name = type.FullName; } else { name = type.Name; } int start = name.IndexOf("[[", StringComparison.Ordinal); int end = name.LastIndexOf("]]", StringComparison.Ordinal); if (start > 0 && end > 0) { name = name.Substring(0, start) + name.Substring(end + 2); } return regex.Replace(name, evaluator.Evaluate); } class GenericsMatchEvaluator { Type[] generics = null; int index; bool fullName; public GenericsMatchEvaluator(Type[] generics, bool fullName) { this.generics = generics; this.index = 0; this.fullName = fullName; } public string Evaluate(Match match) { int numberOfParameters = int.Parse(match.Value.Substring(1), CultureInfo.InvariantCulture); StringBuilder sb = new StringBuilder(); // matched "`N" is replaced by " " sb.Append("<"); for (int i = 0; i < numberOfParameters; i++) { if (i > 0) { sb.Append(", "); } sb.Append(TypeNameHelper.GetDisplayName(this.generics[this.index++], fullName)); } sb.Append(">"); return sb.ToString(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SchemaNotation.cs
- InputScope.cs
- MulticastOption.cs
- GetResponse.cs
- CallContext.cs
- _LocalDataStoreMgr.cs
- MsmqEncryptionAlgorithm.cs
- RenderOptions.cs
- MarshalDirectiveException.cs
- RuleProcessor.cs
- SubpageParagraph.cs
- Variant.cs
- DBConnectionString.cs
- ObjectPersistData.cs
- RecordManager.cs
- PersistenceException.cs
- sqlser.cs
- SafeHandles.cs
- OleDbRowUpdatingEvent.cs
- ForceCopyBuildProvider.cs
- EnumerableRowCollection.cs
- Matrix3DStack.cs
- HierarchicalDataSourceControl.cs
- ProcessModuleDesigner.cs
- CellParaClient.cs
- PaperSource.cs
- Trace.cs
- DataPagerFieldCollection.cs
- ClaimSet.cs
- MemoryMappedViewAccessor.cs
- OverflowException.cs
- FloaterParagraph.cs
- PartitionedDataSource.cs
- ProjectionPathSegment.cs
- Vector3DAnimationUsingKeyFrames.cs
- ReflectionTypeLoadException.cs
- ParseHttpDate.cs
- InfoCardAsymmetricCrypto.cs
- EncryptedData.cs
- ScrollItemPattern.cs
- InvalidCastException.cs
- _SslStream.cs
- NameSpaceEvent.cs
- InstanceDataCollection.cs
- CopyOfAction.cs
- HwndKeyboardInputProvider.cs
- RegionData.cs
- Form.cs
- MenuRendererStandards.cs
- IdentityModelStringsVersion1.cs
- XmlQueryCardinality.cs
- Message.cs
- UpdateException.cs
- AppModelKnownContentFactory.cs
- DisplayInformation.cs
- TextMetrics.cs
- UshortList2.cs
- precedingsibling.cs
- SqlBuilder.cs
- AncestorChangedEventArgs.cs
- TextTreeInsertElementUndoUnit.cs
- XmlAnyAttributeAttribute.cs
- PolygonHotSpot.cs
- XmlAutoDetectWriter.cs
- SamlEvidence.cs
- LineMetrics.cs
- _NTAuthentication.cs
- SizeChangedInfo.cs
- sqlmetadatafactory.cs
- SecurityTokenReferenceStyle.cs
- StreamAsIStream.cs
- Section.cs
- HandlerFactoryCache.cs
- EntityCollection.cs
- PropertyBuilder.cs
- ConfigurationStrings.cs
- safesecurityhelperavalon.cs
- DefaultMemberAttribute.cs
- ClientRolePrincipal.cs
- SymbolDocumentGenerator.cs
- WebEncodingValidator.cs
- DataGridLinkButton.cs
- NavigationWindow.cs
- HandleValueEditor.cs
- UnsafeNativeMethodsPenimc.cs
- SoapHeader.cs
- TextBlock.cs
- ExpressionVisitor.cs
- ManagementClass.cs
- Base64Encoder.cs
- MultipartIdentifier.cs
- String.cs
- OperationCanceledException.cs
- SmiContextFactory.cs
- MetadataArtifactLoaderCompositeFile.cs
- ListControlConvertEventArgs.cs
- ResourceDictionary.cs
- XmlArrayItemAttribute.cs
- Activator.cs
- DocumentPaginator.cs