| File: System\Xaml\Permissions\XamlAccessLevel.cs | Web Access |
| Project: src\runtime\src\libraries\System.Windows.Extensions\src\System.Windows.Extensions.csproj (System.Windows.Extensions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Reflection; using System.Security; namespace System.Xaml.Permissions { public class XamlAccessLevel { private XamlAccessLevel(string assemblyName, string? typeName) { AssemblyNameString = assemblyName; PrivateAccessToTypeName = typeName; } public static XamlAccessLevel AssemblyAccessTo(Assembly assembly) { return new XamlAccessLevel(assembly.FullName!, null); } public static XamlAccessLevel AssemblyAccessTo(AssemblyName assemblyName) { return new XamlAccessLevel(assemblyName.FullName, null); } public static XamlAccessLevel PrivateAccessTo(Type type) { return new XamlAccessLevel(type.Assembly.FullName!, type.FullName); } public static XamlAccessLevel PrivateAccessTo(string assemblyQualifiedTypeName) { int nameBoundary = assemblyQualifiedTypeName.IndexOf(','); string typeName = assemblyQualifiedTypeName.AsSpan(0, nameBoundary).Trim().ToString(); string assemblyFullName = assemblyQualifiedTypeName.AsSpan(nameBoundary + 1).Trim().ToString(); AssemblyName assemblyName = new AssemblyName(assemblyFullName); return new XamlAccessLevel(assemblyName.FullName, typeName); } public AssemblyName AssemblyAccessToAssemblyName { get { return new AssemblyName(AssemblyNameString); } } public string? PrivateAccessToTypeName { get; } internal string AssemblyNameString { get; } } }