internal sealed override IEnumerable <Microsoft.Cci.SecurityAttribute> GetSecurityInformation() { var attributesBag = this.GetAttributesBag(); var wellKnownData = (TypeWellKnownAttributeData)attributesBag.DecodedWellKnownAttributeData; if (wellKnownData != null) { SecurityWellKnownAttributeData securityData = wellKnownData.SecurityInformation; if (securityData != null) { return(securityData.GetSecurityAttributes(attributesBag.Attributes)); } } return(null); }
internal void DecodeSecurityAttribute <T>(Symbol targetSymbol, CSharpCompilation compilation, ref DecodeWellKnownAttributeArguments <AttributeSyntax, CSharpAttributeData, AttributeLocation> arguments) where T : WellKnownAttributeData, ISecurityAttributeTarget, new() { Debug.Assert(!this.HasErrors); bool hasErrors; DeclarativeSecurityAction action = DecodeSecurityAttributeAction(targetSymbol, compilation, arguments.AttributeSyntaxOpt, out hasErrors, arguments.Diagnostics); if (!hasErrors) { T data = arguments.GetOrCreateData <T>(); SecurityWellKnownAttributeData securityData = data.GetOrCreateData(); securityData.SetSecurityAttribute(arguments.Index, action, arguments.AttributesCount); if (this.IsTargetAttribute(targetSymbol, AttributeDescription.PermissionSetAttribute)) { string resolvedPathForFixup = DecodePermissionSetAttribute(compilation, arguments.AttributeSyntaxOpt, arguments.Diagnostics); if (resolvedPathForFixup != null) { securityData.SetPathForPermissionSetAttributeFixup(arguments.Index, resolvedPathForFixup, arguments.AttributesCount); } } } }
SecurityWellKnownAttributeData ISecurityAttributeTarget.GetOrCreateData() { VerifySealed(expected: false); if (lazySecurityAttributeData == null) { lazySecurityAttributeData = new SecurityWellKnownAttributeData(); SetDataStored(); } return lazySecurityAttributeData; }