2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Collections.Generic;
19 using System.Reflection;
21 using Tizen.NUI.BaseComponents;
22 using Tizen.NUI.Binding;
23 using Tizen.NUI.Binding.Internals;
25 namespace Tizen.NUI.EXaml
27 internal class GatherType : Operation
29 public GatherType(GlobalDataList globalDataList, List<object> operationInfo)
31 this.assemblyIndex = (int)operationInfo[0];
32 this.typeName = operationInfo[1] as string;
33 if (3 == operationInfo.Count)
35 this.genericTypeIndexs = operationInfo[2] as List<object>;
37 this.globalDataList = globalDataList;
40 private GlobalDataList globalDataList;
44 var assembly = globalDataList.GatheredAssemblies[assemblyIndex];
45 var type = assembly.GetType(typeName);
47 if (null != genericTypeIndexs)
49 Type[] args = new Type[genericTypeIndexs.Count];
51 for (int i = 0; i < genericTypeIndexs.Count; i++)
53 int typeIndex = (int)genericTypeIndexs[i];
57 args[i] = globalDataList.GatheredTypes[typeIndex];
61 args[i] = GetBaseType.GetBaseTypeByIndex(typeIndex);
65 type = type?.MakeGenericType(args);
68 globalDataList.GatheredTypes.Add(type);
71 private int assemblyIndex;
72 private string typeName;
73 private List<object> genericTypeIndexs;