File: Linker\PInvokeInfo.cs
Web Access
Project: src\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 System;
using System.Runtime.Serialization;
 
namespace Mono.Linker
{
    [DataContract]
    public class PInvokeInfo : IComparable<PInvokeInfo>
    {
        [DataMember(Name = "assembly")]
        internal string AssemblyName { get; set; }
 
        [DataMember(Name = "entryPoint")]
        internal string EntryPoint { get; set; }
 
        [DataMember(Name = "fullName")]
        internal string FullName { get; set; }
 
        [DataMember(Name = "moduleName")]
        internal string ModuleName { get; set; }
 
        public PInvokeInfo(string assemblyName, string entryPoint, string fullName, string moduleName)
        {
            AssemblyName = assemblyName;
            EntryPoint = entryPoint;
            FullName = fullName;
            ModuleName = moduleName;
        }
 
        public int CompareTo(PInvokeInfo? other)
        {
            if (other == null) return 1;
 
            int compareField = string.Compare(this.AssemblyName, other.AssemblyName, StringComparison.Ordinal);
            if (compareField != 0) return compareField;
 
            compareField = string.Compare(this.ModuleName, other.ModuleName, StringComparison.Ordinal);
            if (compareField != 0) return compareField;
 
            compareField = string.Compare(this.FullName, other.FullName, StringComparison.Ordinal);
            if (compareField != 0) return compareField;
 
            return string.Compare(this.EntryPoint, other.EntryPoint, StringComparison.Ordinal);
        }
    }
}