Exemplo n.º 1
0
        public static PackerAttribute Read(IAnnotationInstance annotation)
        {
            PackerAttribute           config         = new PackerAttribute();
            MemberValuePairCollection namedArguments = annotation.Value.NamedArguments;

            config.DisableCleanup            = namedArguments.GetSafeBool(nameof(PackerAttribute.DisableCleanup), false);
            config.DisableCompression        = namedArguments.GetSafeBool(nameof(PackerAttribute.DisableCompression), false);
            config.IncludeDebugSymbols       = namedArguments.GetSafeBool(nameof(PackerAttribute.IncludeDebugSymbols), true);
            config.LoadAtModuleInit          = namedArguments.GetSafeBool(nameof(PackerAttribute.LoadAtModuleInit), true);
            config.CreateTemporaryAssemblies = namedArguments.GetSafeBool(nameof(PackerAttribute.CreateTemporaryAssemblies), false);
            config.IgnoreSatelliteAssemblies = namedArguments.GetSafeBool(nameof(PackerAttribute.IgnoreSatelliteAssemblies), false);

            config.IncludeAssemblies     = namedArguments.GetSafeStringArray(nameof(PackerAttribute.IncludeAssemblies));
            config.ExcludeAssemblies     = namedArguments.GetSafeStringArray(nameof(PackerAttribute.ExcludeAssemblies));
            config.PreloadOrder          = namedArguments.GetSafeStringArray(nameof(PackerAttribute.PreloadOrder));
            config.Unmanaged32Assemblies = namedArguments.GetSafeStringArray(nameof(PackerAttribute.Unmanaged32Assemblies));
            config.Unmanaged64Assemblies = namedArguments.GetSafeStringArray(nameof(PackerAttribute.Unmanaged64Assemblies));

            if (config.IncludeAssemblies != null && config.IncludeAssemblies.Length > 0 &&
                config.ExcludeAssemblies != null && config.ExcludeAssemblies.Length > 0)
            {
                Message.Write(annotation.TargetElement, SeverityType.Error, "JOE01", "Set IncludeAssemblies, or ExcludeAssemblies, but not both.");
            }
            return(config);
        }
        /// <summary>
        /// Returns information about properties set on an [StructuralEquality] attribute instance.
        /// </summary>
        /// <param name="trueAttribute">An attribute instance in user's code.</param>
        /// <returns>An image of what the user's attribute looked like.</returns>
        public static StructuralEqualityAttribute ExtractFrom(IAnnotationValue trueAttribute)
        {
            StructuralEqualityAttribute equality       = new StructuralEqualityAttribute();
            MemberValuePairCollection   namedArguments = trueAttribute.NamedArguments;

            equality.DoNotAddEquals            = (bool)(namedArguments[nameof(StructuralEqualityAttribute.DoNotAddEquals)]?.Value.Value ?? false);
            equality.DoNotAddGetHashCode       = (bool)(namedArguments[nameof(StructuralEqualityAttribute.DoNotAddGetHashCode)]?.Value.Value ?? false);
            equality.IgnoreBaseClass           = (bool)(namedArguments[nameof(StructuralEqualityAttribute.IgnoreBaseClass)]?.Value.Value ?? false);
            equality.TypeCheck                 = (TypeCheck)(namedArguments[nameof(StructuralEqualityAttribute.TypeCheck)]?.Value.Value ?? TypeCheck.ExactlyTheSameTypeAsThis);
            equality.DoNotAddEqualityOperators = (bool)(namedArguments[nameof(StructuralEqualityAttribute.DoNotAddEqualityOperators)]?.Value.Value ?? false);
            return(equality);
        }
        public static string[] GetSafeStringArray(this MemberValuePairCollection collection, string name)
        {
            object array = collection[name]?.Value.Value;

            // Even though only string[] array are legal in attribute properties, the collection provides them to us
            // as object arrays so we need to convert:
            if (array is object[] objects)
            {
                string[] converted = new string[objects.Length];
                Array.Copy(objects, converted, objects.Length);
                array = converted;
            }

            return((string[])(array ?? new string[0]));
        }
 public static bool GetSafeBool(this MemberValuePairCollection collection, string name, bool defaultValue)
 {
     return((bool)(collection[name]?.Value.Value ?? defaultValue));
 }
 public static string[] GetSafeStringArray(this MemberValuePairCollection collection, string name)
 {
     return((string[])(collection[name]?.Value.Value ?? new string[0]));
 }