Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- TextEvent.cs
- EncoderParameter.cs
- DeflateEmulationStream.cs
- ShutDownListener.cs
- TextTreeTextElementNode.cs
- TabRenderer.cs
- StorageEntitySetMapping.cs
- X509SecurityToken.cs
- RemoteWebConfigurationHost.cs
- ZipIORawDataFileBlock.cs
- InputReferenceExpression.cs
- ObjectContextServiceProvider.cs
- TextTreeRootTextBlock.cs
- SimpleRecyclingCache.cs
- ApplicationActivator.cs
- IDispatchConstantAttribute.cs
- CompilationSection.cs
- ExpandSegment.cs
- FormatException.cs
- DataServiceProcessingPipeline.cs
- LinqDataSourceInsertEventArgs.cs
- BulletedListEventArgs.cs
- DataGridViewColumnEventArgs.cs
- Soap.cs
- Storyboard.cs
- AnonymousIdentificationSection.cs
- Typeface.cs
- XPathDocument.cs
- StackBuilderSink.cs
- invalidudtexception.cs
- TextEditor.cs
- backend.cs
- x509utils.cs
- ProcessHostMapPath.cs
- CalendarDateRange.cs
- SafeCloseHandleCritical.cs
- PeerObject.cs
- hebrewshape.cs
- BinaryObjectReader.cs
- ComponentManagerBroker.cs
- TabControlCancelEvent.cs
- DataServiceHost.cs
- AuthenticationModuleElement.cs
- GridItemCollection.cs
- SecurityProtocolFactory.cs
- PropertyPathConverter.cs
- FormsAuthenticationTicket.cs
- BooleanExpr.cs
- XamlHostingSection.cs
- SafeLibraryHandle.cs
- CodeDOMUtility.cs
- QueryFunctions.cs
- FrameworkContentElement.cs
- PageThemeParser.cs
- UnconditionalPolicy.cs
- BuildProvider.cs
- TemplateControl.cs
- EmptyEnumerable.cs
- RegexWriter.cs
- Persist.cs
- ISessionStateStore.cs
- HtmlButton.cs
- UInt64.cs
- GifBitmapDecoder.cs
- EditorOptionAttribute.cs
- XmlWellformedWriter.cs
- PropertyInfoSet.cs
- XamlSerializer.cs
- BaseTreeIterator.cs
- SortableBindingList.cs
- DrawingImage.cs
- Point4D.cs
- Package.cs
- AddInSegmentDirectoryNotFoundException.cs
- RichTextBoxConstants.cs
- DPAPIProtectedConfigurationProvider.cs
- HttpStreamFormatter.cs
- ToolTipService.cs
- Matrix3DConverter.cs
- SymbolEqualComparer.cs
- CheckBoxField.cs
- FunctionNode.cs
- ValidationResult.cs
- SessionStateItemCollection.cs
- BinaryCommonClasses.cs
- DataObjectPastingEventArgs.cs
- CallbackValidator.cs
- DesignerOptionService.cs
- cache.cs
- BitFlagsGenerator.cs
- AxHost.cs
- UICuesEvent.cs
- ReplacementText.cs
- XmlAtomicValue.cs
- SQLGuid.cs
- CrossAppDomainChannel.cs
- StrongName.cs
- HtmlDocument.cs
- FormatConvertedBitmap.cs
- AutomationPropertyInfo.cs