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])); }