| File: Linker\CustomAttributeArgumentExtensions.cs | Web Access |
| Project: src\runtime\src\tools\illink\src\linker\Mono.Linker.csproj (illink) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Mono.Cecil; namespace Mono.Linker { public static class CustomAttributeArgumentExtensions { public static bool IsEqualTo(this CustomAttributeArgument A, CustomAttributeArgument B) { var aVal = A.BaseValue(); var bVal = B.BaseValue(); if (aVal is CustomAttributeArgument[] aArray && bVal is CustomAttributeArgument[] bArray) { if (aArray.Length != bArray.Length) return false; for (int i = 0; i < aArray.Length; i++) { if (!aArray[i].IsEqualTo(bArray[i])) return false; } return true; } return aVal.Equals(bVal); } static object BaseValue(this object value) { while (value is CustomAttributeArgument caa) value = caa.Value; return value; } } }