| File: ViewComponents\ViewComponentDescriptor.cs | Web Access |
| Project: src\aspnetcore\src\Mvc\Mvc.ViewFeatures\src\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj (Microsoft.AspNetCore.Mvc.ViewFeatures) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; using System.Reflection; namespace Microsoft.AspNetCore.Mvc.ViewComponents; /// <summary> /// A descriptor for a view component. /// </summary> [DebuggerDisplay("{DisplayName}")] public class ViewComponentDescriptor { private string _displayName; /// <summary> /// Creates a new <see cref="ViewComponentDescriptor"/>. /// </summary> public ViewComponentDescriptor() { Id = Guid.NewGuid().ToString(); } /// <summary> /// Gets or sets the display name of the view component. /// </summary> public string DisplayName { get { if (_displayName == null) { _displayName = TypeInfo?.FullName; } return _displayName; } set { ArgumentNullException.ThrowIfNull(value); _displayName = value; } } /// <summary> /// Gets or sets the full name. /// </summary> /// <remarks> /// <para> /// The full name is defaulted to the full namespace of the view component class, prepended to /// the class name with a '.' character as the separator. If the view component class uses /// <c>ViewComponent</c> as a suffix, the suffix will be omitted from the <see cref="FullName"/>. /// </para> /// <example> /// Class Name: Contoso.Products.LoginViewComponent /// View Component FullName: Contoso.Products.Login /// </example> /// <example> /// Class Name: Contoso.Blog.Tags /// View Component FullName: Contoso.Blog.Tags /// </example> /// <para> /// If <see cref="ViewComponentAttribute.Name"/> is used to set a name, then this will be used as /// the <see cref="FullName"/>. /// </para> /// <example> /// [ViewComponent(Name = "Contoso.Forum.UsersOnline")] /// public class OnlineUsersViewComponent /// { /// } /// View Component FullName: Contoso.Forum.UsersOnline /// </example> /// </remarks> public string FullName { get; set; } /// <summary> /// Gets or set the generated unique identifier for this <see cref="ViewComponentDescriptor"/>. /// </summary> public string Id { get; set; } /// <summary> /// Gets or sets the short name. /// </summary> /// <remarks> /// <para> /// The short name is defaulted to the name of the view component class. If the view component class uses /// <c>ViewComponent</c> as a suffix, the suffix will be omitted from the <see cref="ShortName"/>. /// </para> /// <example> /// Class Name: Contoso.Products.LoginViewComponent /// View Component ShortName: Login /// </example> /// <example> /// Class Name: Contoso.Blog.Tags /// View Component ShortName: Tags /// </example> /// <para> /// If <see cref="ViewComponentAttribute.Name"/> is used to set a name, then the last segment of the /// value (using '.' as a separate) will be used as the <see cref="ShortName"/>. /// </para> /// <example> /// [ViewComponent(Name = "Contoso.Forum.UsersOnline")] /// public class OnlineUsersViewComponent /// { /// } /// View Component ShortName: UsersOnline /// </example> /// </remarks> public string ShortName { get; set; } /// <summary> /// Gets or sets the <see cref="System.Reflection.TypeInfo"/>. /// </summary> public TypeInfo TypeInfo { get; set; } /// <summary> /// Gets or sets the <see cref="System.Reflection.MethodInfo"/> to invoke. /// </summary> public MethodInfo MethodInfo { get; set; } /// <summary> /// Gets or sets the parameters associated with the method described by <see cref="MethodInfo"/>. /// </summary> public IReadOnlyList<ParameterInfo> Parameters { get; set; } }