コード例 #1
0
        internal void AddDeclarativeSecurity(int token, List <CustomAttributeBuilder> declarativeSecurity)
        {
            Dictionary <int, List <CustomAttributeBuilder> > ordered = new Dictionary <int, List <CustomAttributeBuilder> >();

            foreach (CustomAttributeBuilder cab in declarativeSecurity)
            {
                int action;
                // check for HostProtectionAttribute without SecurityAction
                if (cab.ConstructorArgumentCount == 0)
                {
                    action = (int)System.Security.Permissions.SecurityAction.LinkDemand;
                }
                else
                {
                    action = (int)cab.GetConstructorArgument(0);
                }
                List <CustomAttributeBuilder> list;
                if (!ordered.TryGetValue(action, out list))
                {
                    list = new List <CustomAttributeBuilder>();
                    ordered.Add(action, list);
                }
                list.Add(cab);
            }
            foreach (KeyValuePair <int, List <CustomAttributeBuilder> > kv in ordered)
            {
                DeclSecurityTable.Record rec = new DeclSecurityTable.Record();
                rec.Action        = (short)kv.Key;
                rec.Parent        = token;
                rec.PermissionSet = WriteDeclSecurityBlob(kv.Value);
                this.DeclSecurity.AddRecord(rec);
            }
        }
コード例 #2
0
 internal void AddDeclarativeSecurity(int token, System.Security.Permissions.SecurityAction securityAction, System.Security.PermissionSet permissionSet)
 {
     DeclSecurityTable.Record rec = new DeclSecurityTable.Record();
     rec.Action = (short)securityAction;
     rec.Parent = token;
     // like Ref.Emit, we're using the .NET 1.x xml format
     rec.PermissionSet = this.Blobs.Add(ByteBuffer.Wrap(System.Text.Encoding.Unicode.GetBytes(permissionSet.ToXml().ToString())));
     this.DeclSecurity.AddRecord(rec);
 }