Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Shared / MS / Internal / ResourceIDHelper.cs / 1 / ResourceIDHelper.cs
using System; using System.Text; using System.Globalization; namespace MS.Internal { internal static class ResourceIDHelper { // // Convert relative path to the right format which is used // as ResourceID. // MarkupCompiler, ResXGen, Loader will call this method internally. // static internal string GetResourceIDFromRelativePath(string relPath) { // It is important that relPath not contain a fragment or query at this point // // Currently this will always be true because // 1) The resources listed in the .proj file are tested against the filesystem // to see if they exist. If a query or fragment was present this test would fail. // 2) In the new loader the container apis make sure that the fragment and query are // stripped from the Uri to form the part name which is used to load the resource Uri baseUri = new Uri("http://foo/"); Uri srcUri = new Uri(baseUri, relPath.Replace("#", "%23")); return GetResourceIDFromUri(baseUri, srcUri); } // // This is the central place that returns right ResourceID for // the passed SourceUri. // static private string GetResourceIDFromUri(Uri baseUri, Uri sourceUri) { string resourceID = String.Empty; // // Extracts and returns the resource ID from a URI. // If the source URI is under the baseUri, the resource ID is the URI // after the baseUri and any fragment or query has been removed. // The resource ID is always converted to lower case. // // If the sourceUri is not relative to baseUri, Emtpy string is returned // as resource id. // if (baseUri.IsAbsoluteUri == false || sourceUri.IsAbsoluteUri == false) { // // if any passed Uri is not absolute uri, return empty string here. // return resourceID; } if (baseUri.Scheme == sourceUri.Scheme && baseUri.Host == sourceUri.Host) { // // Get the escaped Path part, Path doesn't include Query and Fragment. // string basePath = baseUri.GetComponents(UriComponents.Path, UriFormat.UriEscaped); string sourcePath = sourceUri.GetComponents(UriComponents.Path, UriFormat.UriEscaped); // // Always lower case the Path string. // basePath = basePath.ToLower(CultureInfo.InvariantCulture); sourcePath = sourcePath.ToLower(CultureInfo.InvariantCulture); if (sourcePath.StartsWith(basePath, StringComparison.OrdinalIgnoreCase)) { resourceID = sourcePath.Substring(basePath.Length); } } return resourceID; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Text; using System.Globalization; namespace MS.Internal { internal static class ResourceIDHelper { // // Convert relative path to the right format which is used // as ResourceID. // MarkupCompiler, ResXGen, Loader will call this method internally. // static internal string GetResourceIDFromRelativePath(string relPath) { // It is important that relPath not contain a fragment or query at this point // // Currently this will always be true because // 1) The resources listed in the .proj file are tested against the filesystem // to see if they exist. If a query or fragment was present this test would fail. // 2) In the new loader the container apis make sure that the fragment and query are // stripped from the Uri to form the part name which is used to load the resource Uri baseUri = new Uri("http://foo/"); Uri srcUri = new Uri(baseUri, relPath.Replace("#", "%23")); return GetResourceIDFromUri(baseUri, srcUri); } // // This is the central place that returns right ResourceID for // the passed SourceUri. // static private string GetResourceIDFromUri(Uri baseUri, Uri sourceUri) { string resourceID = String.Empty; // // Extracts and returns the resource ID from a URI. // If the source URI is under the baseUri, the resource ID is the URI // after the baseUri and any fragment or query has been removed. // The resource ID is always converted to lower case. // // If the sourceUri is not relative to baseUri, Emtpy string is returned // as resource id. // if (baseUri.IsAbsoluteUri == false || sourceUri.IsAbsoluteUri == false) { // // if any passed Uri is not absolute uri, return empty string here. // return resourceID; } if (baseUri.Scheme == sourceUri.Scheme && baseUri.Host == sourceUri.Host) { // // Get the escaped Path part, Path doesn't include Query and Fragment. // string basePath = baseUri.GetComponents(UriComponents.Path, UriFormat.UriEscaped); string sourcePath = sourceUri.GetComponents(UriComponents.Path, UriFormat.UriEscaped); // // Always lower case the Path string. // basePath = basePath.ToLower(CultureInfo.InvariantCulture); sourcePath = sourcePath.ToLower(CultureInfo.InvariantCulture); if (sourcePath.StartsWith(basePath, StringComparison.OrdinalIgnoreCase)) { resourceID = sourcePath.Substring(basePath.Length); } } return resourceID; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BulletChrome.cs
- CfgParser.cs
- MsmqIntegrationInputMessage.cs
- SqlDependencyUtils.cs
- EdgeModeValidation.cs
- NavigationService.cs
- AsyncSerializedWorker.cs
- XmlSchemaExternal.cs
- ThreadSafeMessageFilterTable.cs
- EntityDataSourceWizardForm.cs
- xsdvalidator.cs
- InplaceBitmapMetadataWriter.cs
- LessThanOrEqual.cs
- Adorner.cs
- SystemIPv6InterfaceProperties.cs
- ColumnHeaderConverter.cs
- TranslateTransform.cs
- DataTransferEventArgs.cs
- ColorBlend.cs
- ServiceObjectContainer.cs
- AttributeEmitter.cs
- TagPrefixInfo.cs
- BindValidationContext.cs
- ReverseInheritProperty.cs
- Page.cs
- SystemWebSectionGroup.cs
- DocumentPageTextView.cs
- ResourceKey.cs
- ListViewItem.cs
- OrderedEnumerableRowCollection.cs
- SyndicationDeserializer.cs
- IncrementalCompileAnalyzer.cs
- EventLogInternal.cs
- StrongNameKeyPair.cs
- ObjectTag.cs
- MULTI_QI.cs
- MetabaseSettings.cs
- XPathNodeList.cs
- WebServiceClientProxyGenerator.cs
- TextTreeRootNode.cs
- basenumberconverter.cs
- MbpInfo.cs
- BinHexEncoder.cs
- App.cs
- ISSmlParser.cs
- BindToObject.cs
- TextPenaltyModule.cs
- WorkflowInstance.cs
- ResourcePool.cs
- SqlDesignerDataSourceView.cs
- MasterPageParser.cs
- LifetimeServices.cs
- TypeListConverter.cs
- Attributes.cs
- FullTextBreakpoint.cs
- HttpListenerResponse.cs
- Sql8ExpressionRewriter.cs
- Guid.cs
- SingleObjectCollection.cs
- RankException.cs
- CodeTypeReference.cs
- DPAPIProtectedConfigurationProvider.cs
- HashHelpers.cs
- DataSourceControlBuilder.cs
- BulletedListEventArgs.cs
- SoapTypeAttribute.cs
- ContentHostHelper.cs
- ProfileInfo.cs
- FlowLayoutSettings.cs
- EventWaitHandleSecurity.cs
- OperationAbortedException.cs
- ObjectHandle.cs
- RangeValidator.cs
- DrawingCollection.cs
- BamlRecordWriter.cs
- linebase.cs
- Types.cs
- HttpDigestClientElement.cs
- Polygon.cs
- EventLogger.cs
- EntityTransaction.cs
- StorageMappingItemLoader.cs
- PartialClassGenerationTask.cs
- WinFormsSecurity.cs
- ToolStripGripRenderEventArgs.cs
- TypeTypeConverter.cs
- OracleConnection.cs
- AppliedDeviceFiltersDialog.cs
- IgnoreDataMemberAttribute.cs
- errorpatternmatcher.cs
- Convert.cs
- VisualTreeUtils.cs
- SchemaAttDef.cs
- SatelliteContractVersionAttribute.cs
- UInt32.cs
- XmlQueryContext.cs
- MultitargetUtil.cs
- PermissionSetEnumerator.cs
- ReceiveMessageContent.cs
- BinaryObjectReader.cs