[reflection] Coop handles icalls in System.Reflection and System.RuntimeTypeHandle...
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / Microsoft.Tools.Common / Microsoft / Activities / Presentation / Xaml / XamlNamespaceHelper.cs
1 // <copyright>
2 //   Copyright (c) Microsoft Corporation.  All rights reserved.
3 // </copyright>
4
5 namespace Microsoft.Activities.Presentation.Xaml
6 {
7     using System;
8
9     internal class XamlNamespaceHelper 
10     {
11         internal const string ClrNamespacePrefix = "clr-namespace:";
12         internal const string ClrNamespaceAssemblyField = ";assembly=";
13
14         internal static bool TryParseClrNsUri(string xamlNamespace, out string clrNamespace, out string assembly)
15         {
16             clrNamespace = null;
17             assembly = null;
18             if (!xamlNamespace.StartsWith(ClrNamespacePrefix, StringComparison.Ordinal))
19             {
20                 return false;
21             }
22             int clrNsIndex = ClrNamespacePrefix.Length;
23             int assemblyIndex = xamlNamespace.IndexOf(ClrNamespaceAssemblyField, StringComparison.Ordinal);
24             if (assemblyIndex < clrNsIndex)
25             {
26                 clrNamespace = xamlNamespace.Substring(clrNsIndex);
27                 return true;
28             }
29             clrNamespace = xamlNamespace.Substring(clrNsIndex, assemblyIndex - clrNsIndex);
30             assemblyIndex += ClrNamespaceAssemblyField.Length;
31             assembly = xamlNamespace.Substring(assemblyIndex);
32             return true;
33         }
34     }
35 }