[reflection] Coop handles icalls in System.Reflection and System.RuntimeTypeHandle...
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Presentation / System / Activities / Presentation / Xaml / MultiTargetingXamlSchemaContext.cs
1 //----------------------------------------------------------------
2 // <copyright company="Microsoft Corporation">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //----------------------------------------------------------------
6
7 namespace System.Activities.Presentation
8 {
9     using System.Activities.Presentation.Hosting;
10     using System.Runtime;
11     using System.Xaml;
12     using Microsoft.Activities.Presentation.Xaml;
13
14     internal class MultiTargetingXamlSchemaContext : XamlSchemaContext
15     {
16         private MultiTargetingSupportService multiTargetingService;
17
18         public MultiTargetingXamlSchemaContext(MultiTargetingSupportService multiTargetingService)
19         {
20             Fx.Assert(multiTargetingService != null, "multiTargetingService should not be null");
21
22             this.multiTargetingService = multiTargetingService;
23         }
24
25         protected override XamlType GetXamlType(string xamlNamespace, string name, params XamlType[] typeArguments)
26         {
27             XamlType xamlType = base.GetXamlType(xamlNamespace, name, typeArguments);
28
29             if (xamlType == null || xamlType.UnderlyingType == null)
30             {
31                 return xamlType;
32             }
33
34             ResolverResult resolverResult = MultiTargetingTypeResolver.Resolve(this.multiTargetingService, xamlType.UnderlyingType);
35             return MultiTargetingTypeResolver.GetXamlType(resolverResult, xamlType);
36         }
37     }
38 }