public override IPermission Intersect(IPermission target) { if (target == null) { return(null); } XamlLoadPermission permission = CastPermission(target, "target"); if (permission.IsUnrestricted()) { return(this.Copy()); } if (this.IsUnrestricted()) { return(permission.Copy()); } List <XamlAccessLevel> allowedAccess = new List <XamlAccessLevel>(); foreach (XamlAccessLevel level in this.AllowedAccess) { if (permission.Includes(level)) { allowedAccess.Add(level); } else if (level.PrivateAccessToTypeName != null) { XamlAccessLevel requestedAccess = level.AssemblyOnly(); if (permission.Includes(requestedAccess)) { allowedAccess.Add(requestedAccess); } } } return(new XamlLoadPermission(allowedAccess)); }
public XamlLoadPermission(XamlAccessLevel allowedAccess) { if (allowedAccess == null) { throw new ArgumentNullException("allowedAccess"); } Init(false, new XamlAccessLevel[] { allowedAccess }); }
public XamlLoadPermission(XamlAccessLevel allowedAccess) { if (allowedAccess == null) { throw new ArgumentNullException("allowedAccess"); } this.Init(false, new XamlAccessLevel[] { allowedAccess }); }
public static object LoadBaml(System.Xaml.XamlReader xamlReader, bool skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) { XamlObjectWriterSettings settings = XamlReader.CreateObjectWriterSettingsForBaml(); settings.RootObjectInstance = rootObject; settings.AccessLevel = accessLevel; object result = Load(xamlReader, null, skipJournaledProperties, rootObject, settings, baseUri); EnsureXmlNamespaceMaps(result, xamlReader.SchemaContext); return result; }
internal bool Includes(XamlAccessLevel other) { if (!(other.AssemblyNameString == this.AssemblyNameString)) { return(false); } if (other.PrivateAccessToTypeName != null) { return(other.PrivateAccessToTypeName == this.PrivateAccessToTypeName); } return(true); }
internal bool Includes(XamlAccessLevel other) { if (!(other.AssemblyNameString == this.AssemblyNameString)) { return false; } if (other.PrivateAccessToTypeName != null) { return (other.PrivateAccessToTypeName == this.PrivateAccessToTypeName); } return true; }
public override void FromXml(SecurityElement elem) { if (elem == null) { throw new ArgumentNullException("elem"); } if (elem.Tag != XmlConstants.IPermission) { throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedTag, elem.Tag, XmlConstants.IPermission), "elem"); } string className = elem.Attribute(XmlConstants.Class); if (!className.StartsWith(GetType().FullName, false, TypeConverterHelper.InvariantEnglishUS)) { throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Class, GetType().FullName), "elem"); } string version = elem.Attribute(XmlConstants.Version); if (version != null && version != XmlConstants.VersionNumber) { throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Version, XmlConstants.VersionNumber), "elem"); } string unrestricted = elem.Attribute(XmlConstants.Unrestricted); if (unrestricted != null && bool.Parse(unrestricted)) { Init(true, null); } else { List <XamlAccessLevel> allowedAccess = null; if (elem.Children != null) { allowedAccess = new List <XamlAccessLevel>(elem.Children.Count); foreach (SecurityElement child in elem.Children) { allowedAccess.Add(XamlAccessLevel.FromXml(child)); } } Init(false, allowedAccess); } }
public bool Includes(XamlAccessLevel requestedAccess) { if (requestedAccess == null) { throw new ArgumentNullException("requestedAccess"); } if (_isUnrestricted) { return(true); } foreach (XamlAccessLevel allowedAccess in AllowedAccess) { if (allowedAccess.Includes(requestedAccess)) { return(true); } } return(false); }
public override void FromXml(SecurityElement elem) { if (elem == null) { throw new ArgumentNullException("elem"); } if (elem.Tag != "IPermission") { throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedTag", new object[] { elem.Tag, "IPermission" }), "elem"); } string str = elem.Attribute("class"); if (!str.StartsWith(base.GetType().FullName, false, TypeConverterHelper.InvariantEnglishUS)) { throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedValue", new object[] { str, "class", base.GetType().FullName }), "elem"); } string str2 = elem.Attribute("version"); if ((str2 != null) && (str2 != "1")) { throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedValue", new object[] { str, "version", "1" }), "elem"); } string str3 = elem.Attribute("Unrestricted"); if ((str3 != null) && bool.Parse(str3)) { this.Init(true, null); } else { List <XamlAccessLevel> allowedAccess = null; if (elem.Children != null) { allowedAccess = new List <XamlAccessLevel>(elem.Children.Count); foreach (SecurityElement element in elem.Children) { allowedAccess.Add(XamlAccessLevel.FromXml(element)); } } this.Init(false, allowedAccess); } }
public override IPermission Intersect(IPermission target) { if (target == null) { return(null); } XamlLoadPermission other = CastPermission(target, "target"); if (other.IsUnrestricted()) { return(this.Copy()); } if (this.IsUnrestricted()) { return(other.Copy()); } List <XamlAccessLevel> result = new List <XamlAccessLevel>(); // We could optimize this with a hash, but we don't expect people to be creating // large unions of access levels. foreach (XamlAccessLevel accessLevel in this.AllowedAccess) { // First try the full access level if (other.Includes(accessLevel)) { result.Add(accessLevel); } // Then try the assembly subset else if (accessLevel.PrivateAccessToTypeName != null) { XamlAccessLevel assemblyAccess = accessLevel.AssemblyOnly(); if (other.Includes(assemblyAccess)) { result.Add(assemblyAccess); } } } return(new XamlLoadPermission(result)); }
public bool Includes(XamlAccessLevel requestedAccess) { throw new NotImplementedException(); }
public XamlLoadPermission(XamlAccessLevel allowedAccess) : this(new XamlAccessLevel [] { allowedAccess }) { }
public bool Includes(XamlAccessLevel requestedAccess) { if (requestedAccess == null) { throw new ArgumentNullException("requestedAccess"); } if (this._isUnrestricted) { return true; } foreach (XamlAccessLevel level in this.AllowedAccess) { if (level.Includes(requestedAccess)) { return true; } } return false; }
public XamlLoadPermission(XamlAccessLevel allowedAccess) { }
public bool Includes (XamlAccessLevel requestedAccess) { throw new NotImplementedException (); }
public XamlLoadPermission (XamlAccessLevel allowedAccess) : this (new XamlAccessLevel [] {allowedAccess}) { }
internal bool Includes(XamlAccessLevel other) { return(other.AssemblyNameString == AssemblyNameString && (other.PrivateAccessToTypeName == null || other.PrivateAccessToTypeName == PrivateAccessToTypeName)); }
public bool Includes(XamlAccessLevel requestedAccess) { return(true); }