Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------- // 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 with Regex 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
- PartitionedDataSource.cs
- ResourceSet.cs
- _ShellExpression.cs
- OutOfProcStateClientManager.cs
- ObjectDisposedException.cs
- ChannelHandler.cs
- BitmapEffectInputData.cs
- Label.cs
- Variant.cs
- FontFamilyIdentifier.cs
- GridViewRow.cs
- X509SecurityTokenParameters.cs
- Tool.cs
- ThicknessAnimation.cs
- ZipIOExtraField.cs
- SequentialUshortCollection.cs
- NodeFunctions.cs
- InlineCollection.cs
- CalendarDesigner.cs
- XmlCDATASection.cs
- HttpCookieCollection.cs
- xml.cs
- WebDisplayNameAttribute.cs
- PointConverter.cs
- ReflectionPermission.cs
- WebServiceErrorEvent.cs
- NetSectionGroup.cs
- SqlDataSourceEnumerator.cs
- TreeNodeStyleCollectionEditor.cs
- InputProcessorProfilesLoader.cs
- UrlPropertyAttribute.cs
- Matrix.cs
- CachedTypeface.cs
- HotCommands.cs
- ServiceThrottlingBehavior.cs
- Odbc32.cs
- InvalidAsynchronousStateException.cs
- TypeSystemHelpers.cs
- Pair.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- RuntimeConfigurationRecord.cs
- DataTableTypeConverter.cs
- FixedSOMTextRun.cs
- WizardPanel.cs
- EncoderExceptionFallback.cs
- ProjectionPath.cs
- DateTimePicker.cs
- SqlXmlStorage.cs
- __Filters.cs
- CollectionContainer.cs
- Int16Storage.cs
- MembershipUser.cs
- LinqDataView.cs
- TextLineResult.cs
- _TimerThread.cs
- wmiprovider.cs
- Label.cs
- DecimalAnimation.cs
- Opcode.cs
- HtmlImage.cs
- QuestionEventArgs.cs
- SourceFilter.cs
- ImageIndexEditor.cs
- Int16AnimationUsingKeyFrames.cs
- tooltip.cs
- AnimationLayer.cs
- RoutedPropertyChangedEventArgs.cs
- MissingManifestResourceException.cs
- MatrixAnimationUsingPath.cs
- InfiniteTimeSpanConverter.cs
- MiniModule.cs
- Win32MouseDevice.cs
- ZoneMembershipCondition.cs
- NaturalLanguageHyphenator.cs
- DataContractSerializerFaultFormatter.cs
- CounterCreationData.cs
- LoginStatusDesigner.cs
- SqlCacheDependency.cs
- ColorInterpolationModeValidation.cs
- WebPartEventArgs.cs
- ComplexLine.cs
- ItemCollection.cs
- TextTreeDeleteContentUndoUnit.cs
- MetabaseSettings.cs
- DataGridAddNewRow.cs
- ByteViewer.cs
- Configuration.cs
- ClonableStack.cs
- SafeProcessHandle.cs
- EntityViewGenerator.cs
- GorillaCodec.cs
- DesignerExtenders.cs
- ArgumentNullException.cs
- TimersDescriptionAttribute.cs
- ListBoxDesigner.cs
- UriTemplatePathPartiallyEquivalentSet.cs
- BitmapEffectState.cs
- NativeCppClassAttribute.cs
- ListViewInsertedEventArgs.cs
- StyleBamlRecordReader.cs