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
- Scanner.cs
- FocusChangedEventArgs.cs
- BindingMemberInfo.cs
- BuildResultCache.cs
- ImageCodecInfo.cs
- SQLDateTimeStorage.cs
- EnumMember.cs
- IOThreadScheduler.cs
- HtmlHistory.cs
- SymbolMethod.cs
- SplineKeyFrames.cs
- ScrollBarAutomationPeer.cs
- CompilerTypeWithParams.cs
- SafeRegistryKey.cs
- DatatypeImplementation.cs
- CornerRadiusConverter.cs
- PropertyGridDesigner.cs
- SafeHandles.cs
- Models.cs
- InstalledVoice.cs
- GridViewColumn.cs
- SystemUnicastIPAddressInformation.cs
- WebPartCatalogAddVerb.cs
- NeutralResourcesLanguageAttribute.cs
- WebBrowserUriTypeConverter.cs
- WebExceptionStatus.cs
- _ScatterGatherBuffers.cs
- RectAnimationUsingKeyFrames.cs
- MetadataHelper.cs
- Line.cs
- EntityTemplateUserControl.cs
- Control.cs
- RootAction.cs
- Formatter.cs
- StatusBarItemAutomationPeer.cs
- SHA512Managed.cs
- MULTI_QI.cs
- TaskSchedulerException.cs
- StrongNameIdentityPermission.cs
- Propagator.Evaluator.cs
- TranslateTransform.cs
- StateDesigner.cs
- ClientType.cs
- PrePrepareMethodAttribute.cs
- Globals.cs
- Native.cs
- DeobfuscatingStream.cs
- MetadataItemEmitter.cs
- Nullable.cs
- StorageSetMapping.cs
- MissingMethodException.cs
- StreamGeometry.cs
- EdmMember.cs
- Page.cs
- BamlResourceContent.cs
- RecognizerStateChangedEventArgs.cs
- X509Certificate2.cs
- GenerateTemporaryAssemblyTask.cs
- WebPartVerb.cs
- VariableQuery.cs
- PrivilegedConfigurationManager.cs
- HttpCookie.cs
- CodeVariableReferenceExpression.cs
- TypeInitializationException.cs
- SpellerInterop.cs
- XPathArrayIterator.cs
- Part.cs
- HtmlInputReset.cs
- _LazyAsyncResult.cs
- DependencyObjectType.cs
- ExecutionEngineException.cs
- FileDialogCustomPlacesCollection.cs
- CodeObjectCreateExpression.cs
- StreamProxy.cs
- RNGCryptoServiceProvider.cs
- DataPagerCommandEventArgs.cs
- TextEditorParagraphs.cs
- GatewayIPAddressInformationCollection.cs
- _ConnectOverlappedAsyncResult.cs
- SamlAttributeStatement.cs
- ReachFixedDocumentSerializer.cs
- ControlSerializer.cs
- LingerOption.cs
- SecUtil.cs
- JobInputBins.cs
- HtmlTernaryTree.cs
- ResolveDuplexAsyncResult.cs
- oledbmetadatacolumnnames.cs
- ClientTargetCollection.cs
- Vector.cs
- NavigatingCancelEventArgs.cs
- DesignerTransaction.cs
- JsonFormatWriterGenerator.cs
- OracleLob.cs
- SizeValueSerializer.cs
- HideDisabledControlAdapter.cs
- MetadataItemSerializer.cs
- XmlBinaryReader.cs
- ActivityXamlServices.cs
- Utility.cs