private static bool IsAssemblyInfoFilled(UriDescription description) { if (string.IsNullOrEmpty(description.AssemblyName)) { return(false); } return(!string.IsNullOrEmpty(description.AssemblyVersion) || !string.IsNullOrEmpty(description.AssemblyPublicKeyToken)); }
private static Uri CreateUri(UriDescription description) { Debug.Assert(description != null); return(SharedThemeResourceDictionary.CreateUri( description.AssemblyName, description.AssemblyVersion, description.AssemblyPublicKeyToken, description.RelativePath)); }
private static bool TryGetUriDescription(Uri uri, out UriDescription description) { description = null; if ((uri == null) || !uri.IsAbsoluteUri) { return(false); } if (!string.Equals(uri.Scheme, SharedThemeResourceDictionary.UriSchemePack, StringComparison.InvariantCultureIgnoreCase)) { return(false); } var segments = uri.Segments; if ((segments == null) || (segments.Length < 2)) { return(false); } var componentPart = segments[1]; var index = componentPart.IndexOf(SharedThemeResourceDictionary.UriComponent, StringComparison.InvariantCultureIgnoreCase); if (index < 0) { return(false); } string assemblyName = null; string assemblyVersion = null; string assemblyPublicKeyToken = null; var assemblyInfo = componentPart.Substring(0, index); if (assemblyInfo.Length > 0) { var assemblyParts = assemblyInfo.Split(new string[] { SharedThemeResourceDictionary.UriAssemblyInfoSeparator }, StringSplitOptions.None); Debug.Assert(assemblyParts.Length <= 3); assemblyName = (assemblyParts.Length > 0) ? assemblyParts[0] : null; assemblyVersion = (assemblyParts.Length > 1) ? SharedThemeResourceDictionary.ParseAssemblyVersion(assemblyParts[1]) : null; assemblyPublicKeyToken = (assemblyParts.Length > 2) ? assemblyParts[2] : null; } string relativePath = null; if (segments.Length > 2) { var sb = new StringBuilder(); for (int i = 2; i < segments.Length; i++) { sb.Append(segments[i]); } relativePath = sb.ToString(); } description = new UriDescription(assemblyName, assemblyVersion, assemblyPublicKeyToken, relativePath); return(true); }
private static bool TryGetUriDescription( Uri uri, out UriDescription description ) { description = null; if( ( uri == null ) || !uri.IsAbsoluteUri ) return false; if( !string.Equals( uri.Scheme, SharedThemeResourceDictionary.UriSchemePack, StringComparison.InvariantCultureIgnoreCase ) ) return false; var segments = uri.Segments; if( ( segments == null ) || ( segments.Length < 2 ) ) return false; var componentPart = segments[ 1 ]; var index = componentPart.IndexOf( SharedThemeResourceDictionary.UriComponent, StringComparison.InvariantCultureIgnoreCase ); if( index < 0 ) return false; string assemblyName = null; string assemblyVersion = null; string assemblyPublicKeyToken = null; var assemblyInfo = componentPart.Substring( 0, index ); if( assemblyInfo.Length > 0 ) { var assemblyParts = assemblyInfo.Split( new string[] { SharedThemeResourceDictionary.UriAssemblyInfoSeparator }, StringSplitOptions.None ); Debug.Assert( assemblyParts.Length <= 3 ); assemblyName = ( assemblyParts.Length > 0 ) ? assemblyParts[ 0 ] : null; assemblyVersion = ( assemblyParts.Length > 1 ) ? SharedThemeResourceDictionary.ParseAssemblyVersion( assemblyParts[ 1 ] ) : null; assemblyPublicKeyToken = ( assemblyParts.Length > 2 ) ? assemblyParts[ 2 ] : null; } string relativePath = null; if( segments.Length > 2 ) { var sb = new StringBuilder(); for( int i = 2; i < segments.Length; i++ ) { sb.Append( segments[ i ] ); } relativePath = sb.ToString(); } description = new UriDescription( assemblyName, assemblyVersion, assemblyPublicKeyToken, relativePath ); return true; }
private static bool IsAssemblyInfoFilled( UriDescription description ) { if( string.IsNullOrEmpty( description.AssemblyName ) ) return false; return !string.IsNullOrEmpty( description.AssemblyVersion ) || !string.IsNullOrEmpty( description.AssemblyPublicKeyToken ); }
private static Uri CreateUri( UriDescription description ) { Debug.Assert( description != null ); return SharedThemeResourceDictionary.CreateUri( description.AssemblyName, description.AssemblyVersion, description.AssemblyPublicKeyToken, description.RelativePath ); }