Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultTypeArgumentAttribute.cs
- PointLightBase.cs
- MetadataCache.cs
- VScrollProperties.cs
- MtomMessageEncoder.cs
- CertificateReferenceElement.cs
- FixUpCollection.cs
- BrowserInteropHelper.cs
- DataGridViewRowHeaderCell.cs
- PEFileReader.cs
- FixedTextSelectionProcessor.cs
- StylusCollection.cs
- Interlocked.cs
- OleDbReferenceCollection.cs
- ColorContextHelper.cs
- XpsManager.cs
- CodeIdentifier.cs
- FileSystemEventArgs.cs
- MbpInfo.cs
- FixedSOMImage.cs
- DragEventArgs.cs
- linebase.cs
- PublishLicense.cs
- InstanceDataCollection.cs
- ToolStripLocationCancelEventArgs.cs
- SinglePageViewer.cs
- DataGridTextBox.cs
- DerivedKeyCachingSecurityTokenSerializer.cs
- ListBoxChrome.cs
- Metafile.cs
- BrowserTree.cs
- BindingListCollectionView.cs
- SecurityTokenTypes.cs
- CustomAttributeFormatException.cs
- MembershipSection.cs
- SystemIcons.cs
- RegexCaptureCollection.cs
- Boolean.cs
- BitSet.cs
- ToolZone.cs
- KnownBoxes.cs
- OLEDB_Enum.cs
- ConfigurationFileMap.cs
- RegexCaptureCollection.cs
- DataRowView.cs
- XmlComplianceUtil.cs
- RuntimeHelpers.cs
- SectionUpdates.cs
- ObjectQueryProvider.cs
- MessageQueueAccessControlEntry.cs
- ControlUtil.cs
- DocumentViewerBase.cs
- RoleManagerEventArgs.cs
- LocalizableAttribute.cs
- ControlDesignerState.cs
- ScrollBar.cs
- SqlDuplicator.cs
- CorePropertiesFilter.cs
- NavigateEvent.cs
- QualifiedCellIdBoolean.cs
- WebServiceResponse.cs
- XPathDocument.cs
- SQLSingleStorage.cs
- FocusChangedEventArgs.cs
- HtmlString.cs
- DesignerAdapterAttribute.cs
- MembershipSection.cs
- InkCanvas.cs
- ProcessModule.cs
- Int64Converter.cs
- DesigntimeLicenseContext.cs
- EasingFunctionBase.cs
- Normalizer.cs
- ProfileBuildProvider.cs
- SecurityContextSecurityToken.cs
- ReflectionTypeLoadException.cs
- GZipStream.cs
- FontWeightConverter.cs
- ServiceModelActivationSectionGroup.cs
- KeyConverter.cs
- ProtocolsConfigurationHandler.cs
- CancellationState.cs
- Condition.cs
- SqlCacheDependencyDatabaseCollection.cs
- AutomationPattern.cs
- LocatorBase.cs
- X509AsymmetricSecurityKey.cs
- SqlConnectionString.cs
- Rect.cs
- WaitHandle.cs
- _ListenerResponseStream.cs
- errorpatternmatcher.cs
- CodeNamespaceImportCollection.cs
- Fx.cs
- HttpListenerElement.cs
- NameTable.cs
- LinqDataSourceStatusEventArgs.cs
- ToolStripItemDesigner.cs
- ExpressionConverter.cs
- Splitter.cs