Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / ResourceIDHelper.cs / 1305600 / 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
- ResourcePermissionBase.cs
- DataGridViewImageCell.cs
- ArrayEditor.cs
- SHA256Managed.cs
- VSWCFServiceContractGenerator.cs
- XmlCodeExporter.cs
- DataContract.cs
- BufferedReadStream.cs
- Menu.cs
- Win32PrintDialog.cs
- CodeIterationStatement.cs
- NamespaceInfo.cs
- MeshGeometry3D.cs
- DataGridColumnHeadersPresenter.cs
- LowerCaseStringConverter.cs
- SettingsProperty.cs
- Freezable.cs
- ComplexPropertyEntry.cs
- NodeFunctions.cs
- Perspective.cs
- WorkflowLayouts.cs
- JsonByteArrayDataContract.cs
- ComponentCollection.cs
- BinHexEncoder.cs
- ScriptDescriptor.cs
- GeneralTransform3DCollection.cs
- SharedStatics.cs
- DigestTraceRecordHelper.cs
- Sentence.cs
- MediaSystem.cs
- MetadataItemEmitter.cs
- TCPClient.cs
- UniformGrid.cs
- MeasureItemEvent.cs
- hresults.cs
- DataGridViewRowsRemovedEventArgs.cs
- ByteStack.cs
- GridViewRowPresenterBase.cs
- UIHelper.cs
- CodeObject.cs
- ObjectDataSourceDisposingEventArgs.cs
- GeometryModel3D.cs
- AmbiguousMatchException.cs
- FloaterParaClient.cs
- RectAnimation.cs
- Operator.cs
- ProviderCollection.cs
- DataRowView.cs
- ExistsInCollection.cs
- NamespaceCollection.cs
- _IPv4Address.cs
- WebPartConnectionsDisconnectVerb.cs
- ObjectNotFoundException.cs
- DocumentViewerAutomationPeer.cs
- PtsHost.cs
- SchemaDeclBase.cs
- TileBrush.cs
- ActivityCodeDomReferenceService.cs
- PolicyException.cs
- MethodBuilder.cs
- WebProxyScriptElement.cs
- DataGridViewColumnConverter.cs
- XmlILConstructAnalyzer.cs
- ProgressiveCrcCalculatingStream.cs
- MediaScriptCommandRoutedEventArgs.cs
- DataGridLinkButton.cs
- ScrollProviderWrapper.cs
- RegexWorker.cs
- XmlSerializerFactory.cs
- WinEventQueueItem.cs
- EpmContentSerializer.cs
- FixUpCollection.cs
- FixedPage.cs
- XmlSerializer.cs
- BitmapEffectInput.cs
- ControlFilterExpression.cs
- CapabilitiesAssignment.cs
- XmlDocumentType.cs
- TextEditorDragDrop.cs
- DataService.cs
- ISessionStateStore.cs
- SqlRowUpdatingEvent.cs
- HttpInputStream.cs
- OuterGlowBitmapEffect.cs
- UIElementIsland.cs
- Utils.cs
- RayHitTestParameters.cs
- GraphicsState.cs
- CultureNotFoundException.cs
- ToolStripItemImageRenderEventArgs.cs
- TaskHelper.cs
- ListViewSortEventArgs.cs
- AccessibleObject.cs
- RegexParser.cs
- GeneralTransform2DTo3D.cs
- Item.cs
- BindingContext.cs
- DataGridViewAutoSizeModeEventArgs.cs
- SafeCryptoHandles.cs
- WeakReferenceList.cs