示例#1
0
        static InsAssembly WithQualifications(this InsAssembly assembly, ImmutableArray <InsAssemblyQualification> newQualifications)
        {
            if (newQualifications == assembly.Qualifications)
            {
                return(assembly);
            }

            return(new InsAssembly(assembly.Name, newQualifications));
        }
        public static string Format(InsAssembly assembly)
        {
            if (assembly.Qualifications.Length == 0 && assembly.Name.AsSpan().IndexOfAny(Delimiters.All) < 0)
            {
                return(assembly.Name);
            }

            return(Write(BuilderPool.Rent(), assembly).ToStringAndReturn());
        }
示例#3
0
 public static InsAssembly WithPublicKey(this InsAssembly assembly, byte[] publicKey)
 {
     if (publicKey == null)
     {
         return(assembly.WithQualification(WellKnownQualificationNames.PublicKey, NullBlob));
     }
     else
     {
         return(assembly.WithPublicKey(publicKey.AsSpan()));
     }
 }
        public static StringBuilder Write(StringBuilder builder, InsAssembly assembly)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (assembly == null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            return(Writer.WriteAssembly(assembly, builder));
        }
示例#5
0
        public static bool TryGetQualification(this InsAssembly assembly, string name, [NotNullWhen(true)] out string?value)
        {
            foreach (var qualification in assembly.Qualifications)
            {
                if (qualification.Name == name)
                {
                    value = qualification.Value;
                    return(true);
                }
            }

            value = null;
            return(false);
        }
示例#6
0
        public static bool TryGetProcessorArchitecture(this InsAssembly assembly, out ProcessorArchitecture processorArchitecture)
        {
            if (!assembly.TryGetQualification(WellKnownQualificationNames.ProcessorArchitecture, out var value))
            {
                processorArchitecture = default;
                return(false);
            }

            if (!Enum.TryParse(value, out processorArchitecture))
            {
                throw new FormatException("ProcessorArchitecture qualification was provided, but was unrecognised.");
            }

            return(true);
        }
示例#7
0
        public static bool TryGetPublicKeyToken(this InsAssembly assembly, out byte[]?publicKeyToken)
        {
            if (!assembly.TryGetQualification(WellKnownQualificationNames.PublicKeyToken, out var value))
            {
                publicKeyToken = null;
                return(false);
            }

            if (!TryParseBlob(value, out publicKeyToken))
            {
                throw new FormatException("PublicKeyToken qualification was provided, but was in an unrecognised format.");
            }

            return(true);
        }
示例#8
0
        public static bool TryGetVersion(this InsAssembly assembly, [NotNullWhen(true)] out Version?version)
        {
            if (!assembly.TryGetQualification(WellKnownQualificationNames.Version, out var value))
            {
                version = null;
                return(false);
            }

            if (!Version.TryParse(value, out version))
            {
                throw new FormatException("Version qualification was provided, but was in an unrecognised format.");
            }

            return(true);
        }
示例#9
0
        public virtual InsAssembly VisitAssembly(InsAssembly assembly, TArgument argument)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            var qualifications = VisitAssemblyQualifications(assembly.Qualifications, argument);

            if (qualifications == assembly.Qualifications)
            {
                return(assembly);
            }

            return(new InsAssembly(assembly.Name, qualifications));
        }
            public static StringBuilder WriteAssembly(InsAssembly assembly, StringBuilder builder)
            {
                WriteIdentifier(assembly.Name, builder);

                foreach (var qualification in assembly.Qualifications)
                {
                    builder.Append(", ");
                    WriteIdentifier(qualification.Name, builder);
                    builder.Append('=');

                    if (RequiresQuoting(qualification.Value))
                    {
                        WriteQuotedIdentifier(qualification.Value, builder);
                    }
                    else
                    {
                        WriteIdentifier(qualification.Value, builder);
                    }
                }

                return(builder);
            }
示例#11
0
 public static InsAssembly WithPublicKey(this InsAssembly assembly, ReadOnlySpan <byte> publicKey)
 => assembly.WithQualification(WellKnownQualificationNames.PublicKey, FormatBlob(publicKey));
示例#12
0
 public static InsAssembly WithVersion(this InsAssembly assembly, Version version)
 => assembly.WithQualification(WellKnownQualificationNames.Version, version.ToString());
示例#13
0
 public static InsAssembly WithoutQualification(this InsAssembly assembly, string name)
 => assembly.WithQualifications(assembly.Qualifications.WithoutQualification(name));
示例#14
0
 public static InsAssembly WithProcessorArchitecture(this InsAssembly assembly, ProcessorArchitecture processorArchitecture)
 => assembly.WithQualification(WellKnownQualificationNames.ProcessorArchitecture, processorArchitecture.ToString());