You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			487 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			487 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.ComponentModel.DataAnnotations.Resources;
 | |
| using System.Diagnostics.CodeAnalysis;
 | |
| using System.Globalization;
 | |
| 
 | |
| namespace System.ComponentModel.DataAnnotations {
 | |
|     /// <summary>
 | |
|     /// DisplayAttribute is a general-purpose attribute to specify user-visible globalizable strings for types and members.
 | |
|     /// The string properties of this class can be used either as literals or as resource identifiers into a specified
 | |
|     /// <see cref="ResourceType"/>
 | |
|     /// </summary>
 | |
|     [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Method, AllowMultiple = false)]
 | |
|     public sealed class DisplayAttribute : Attribute {
 | |
|         #region Member Fields
 | |
| 
 | |
|         private Type _resourceType;
 | |
|         private LocalizableString _shortName = new LocalizableString("ShortName");
 | |
|         private LocalizableString _name = new LocalizableString("Name");
 | |
|         private LocalizableString _description = new LocalizableString("Description");
 | |
|         private LocalizableString _prompt = new LocalizableString("Prompt");
 | |
|         private LocalizableString _groupName = new LocalizableString("GroupName");
 | |
|         private bool? _autoGenerateField;
 | |
|         private bool? _autoGenerateFilter;
 | |
|         private int? _order;
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region All Constructors
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Default constructor for DisplayAttribute.  All associated string properties and methods will return <c>null</c>.
 | |
|         /// </summary>
 | |
|         public DisplayAttribute() {
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Properties
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the ShortName attribute property, which may be a resource key string.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetShortName"/> method to retrieve the UI display string.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// The property contains either the literal, non-localized string or the resource key
 | |
|         /// to be used in conjunction with <see cref="ResourceType"/> to configure a localized
 | |
|         /// short name for display.
 | |
|         /// <para>
 | |
|         /// The <see cref="GetShortName"/> method will return either the literal, non-localized
 | |
|         /// string or the localized string when <see cref="ResourceType"/> has been specified.
 | |
|         /// </para>
 | |
|         /// </remarks>
 | |
|         /// <value>
 | |
|         /// The short name is generally used as the grid column label for a UI element bound to the member
 | |
|         /// bearing this attribute.  A <c>null</c> or empty string is legal, and consumers must allow for that.
 | |
|         /// </value>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public string ShortName {
 | |
|             get {
 | |
|                 return this._shortName.Value;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._shortName.Value != value) {
 | |
|                     this._shortName.Value = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the Name attribute property, which may be a resource key string.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetName"/> method to retrieve the UI display string.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// The property contains either the literal, non-localized string or the resource key
 | |
|         /// to be used in conjunction with <see cref="ResourceType"/> to configure a localized
 | |
|         /// name for display.
 | |
|         /// <para>
 | |
|         /// The <see cref="GetName"/> method will return either the literal, non-localized
 | |
|         /// string or the localized string when <see cref="ResourceType"/> has been specified.
 | |
|         /// </para>
 | |
|         /// </remarks>
 | |
|         /// <value>
 | |
|         /// The name is generally used as the field label for a UI element bound to the member
 | |
|         /// bearing this attribute.  A <c>null</c> or empty string is legal, and consumers must allow for that.
 | |
|         /// </value>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public string Name {
 | |
|             get {
 | |
|                 return this._name.Value;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._name.Value != value) {
 | |
|                     this._name.Value = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the Description attribute property, which may be a resource key string.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetDescription"/> method to retrieve the UI display string.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// The property contains either the literal, non-localized string or the resource key
 | |
|         /// to be used in conjunction with <see cref="ResourceType"/> to configure a localized
 | |
|         /// description for display.
 | |
|         /// <para>
 | |
|         /// The <see cref="GetDescription"/> method will return either the literal, non-localized
 | |
|         /// string or the localized string when <see cref="ResourceType"/> has been specified.
 | |
|         /// </para>
 | |
|         /// </remarks>
 | |
|         /// <value>
 | |
|         /// Description is generally used as a tool tip or description a UI element bound to the member
 | |
|         /// bearing this attribute.  A <c>null</c> or empty string is legal, and consumers must allow for that.
 | |
|         /// </value>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public string Description {
 | |
|             get {
 | |
|                 return this._description.Value;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._description.Value != value) {
 | |
|                     this._description.Value = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the Prompt attribute property, which may be a resource key string.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetPrompt"/> method to retrieve the UI display string.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// The property contains either the literal, non-localized string or the resource key
 | |
|         /// to be used in conjunction with <see cref="ResourceType"/> to configure a localized
 | |
|         /// prompt for display.
 | |
|         /// <para>
 | |
|         /// The <see cref="GetPrompt"/> method will return either the literal, non-localized
 | |
|         /// string or the localized string when <see cref="ResourceType"/> has been specified.
 | |
|         /// </para>
 | |
|         /// </remarks>
 | |
|         /// <value>
 | |
|         /// A prompt is generally used as a prompt or watermark for a UI element bound to the member
 | |
|         /// bearing this attribute.  A <c>null</c> or empty string is legal, and consumers must allow for that.
 | |
|         /// </value>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public string Prompt {
 | |
|             get {
 | |
|                 return this._prompt.Value;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._prompt.Value != value) {
 | |
|                     this._prompt.Value = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the GroupName attribute property, which may be a resource key string.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetGroupName"/> method to retrieve the UI display string.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// The property contains either the literal, non-localized string or the resource key
 | |
|         /// to be used in conjunction with <see cref="ResourceType"/> to configure a localized
 | |
|         /// group name for display.
 | |
|         /// <para>
 | |
|         /// The <see cref="GetGroupName"/> method will return either the literal, non-localized
 | |
|         /// string or the localized string when <see cref="ResourceType"/> has been specified.
 | |
|         /// </para>
 | |
|         /// </remarks>
 | |
|         /// <value>
 | |
|         /// A group name is used for grouping fields into the UI.  A <c>null</c> or empty string is legal,
 | |
|         /// and consumers must allow for that.
 | |
|         /// </value>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public string GroupName {
 | |
|             get {
 | |
|                 return this._groupName.Value;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._groupName.Value != value) {
 | |
|                     this._groupName.Value = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the <see cref="System.Type"/> that contains the resources for <see cref="ShortName"/>,
 | |
|         /// <see cref="Name"/>, <see cref="Description"/>, <see cref="Prompt"/>, and <see cref="GroupName"/>.
 | |
|         /// Using <see cref="ResourceType"/> along with these Key properties, allows the <see cref="GetShortName"/>,
 | |
|         /// <see cref="GetName"/>, <see cref="GetDescription"/>, <see cref="GetPrompt"/>, and <see cref="GetGroupName"/>
 | |
|         /// methods to return localized values.
 | |
|         /// </summary>
 | |
|         public Type ResourceType {
 | |
|             get {
 | |
|                 return this._resourceType;
 | |
|             }
 | |
|             set {
 | |
|                 if (this._resourceType != value) {
 | |
|                     this._resourceType = value;
 | |
| 
 | |
|                     this._shortName.ResourceType = value;
 | |
|                     this._name.ResourceType = value;
 | |
|                     this._description.ResourceType = value;
 | |
|                     this._prompt.ResourceType = value;
 | |
|                     this._groupName.ResourceType = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets whether UI should be generated automatically to display this field. If this property is not
 | |
|         /// set then the presentation layer will automatically determine whether UI should be generated. Setting this
 | |
|         /// property allows an override of the default behavior of the presentation layer.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetAutoGenerateField"/> method to retrieve the value, as this property getter will throw
 | |
|         /// an exception if the value has not been set.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// If the getter of this property is invoked when the value has not been explicitly set using the setter.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public bool AutoGenerateField {
 | |
|             get {
 | |
|                 if (!this._autoGenerateField.HasValue) {
 | |
|                     throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.DisplayAttribute_PropertyNotSet, "AutoGenerateField", "GetAutoGenerateField"));
 | |
|                 }
 | |
| 
 | |
|                 return this._autoGenerateField.Value;
 | |
|             }
 | |
|             set {
 | |
|                 this._autoGenerateField = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets whether UI should be generated automatically to display filtering for this field. If this property is not
 | |
|         /// set then the presentation layer will automatically determine whether filtering UI should be generated. Setting this
 | |
|         /// property allows an override of the default behavior of the presentation layer.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetAutoGenerateFilter"/> method to retrieve the value, as this property getter will throw
 | |
|         /// an exception if the value has not been set.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// If the getter of this property is invoked when the value has not been explicitly set using the setter.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public bool AutoGenerateFilter {
 | |
|             get {
 | |
|                 if (!this._autoGenerateFilter.HasValue) {
 | |
|                     throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.DisplayAttribute_PropertyNotSet, "AutoGenerateFilter", "GetAutoGenerateFilter"));
 | |
|                 }
 | |
| 
 | |
|                 return this._autoGenerateFilter.Value;
 | |
|             }
 | |
|             set {
 | |
|                 this._autoGenerateFilter = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the order in which this field should be displayed.  If this property is not set then
 | |
|         /// the presentation layer will automatically determine the order.  Setting this property explicitly
 | |
|         /// allows an override of the default behavior of the presentation layer.
 | |
|         /// <para>
 | |
|         /// Consumers must use the <see cref="GetOrder"/> method to retrieve the value, as this property getter will throw
 | |
|         /// an exception if the value has not been set.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// If the getter of this property is invoked when the value has not been explicitly set using the setter.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The property and method are a matched pair")]
 | |
|         public int Order {
 | |
|             get {
 | |
|                 if (!this._order.HasValue) {
 | |
|                     throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.DisplayAttribute_PropertyNotSet, "Order", "GetOrder"));
 | |
|                 }
 | |
| 
 | |
|                 return this._order.Value;
 | |
|             }
 | |
|             set {
 | |
|                 this._order = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region Methods
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the UI display string for ShortName.
 | |
|         /// <para>
 | |
|         /// This can be either a literal, non-localized string provided to <see cref="ShortName"/> or the
 | |
|         /// localized string found when <see cref="ResourceType"/> has been specified and <see cref="ShortName"/>
 | |
|         /// represents a resource key within that resource type.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="ResourceType"/> has not been specified, the value of
 | |
|         /// <see cref="ShortName"/> will be returned.
 | |
|         /// <para>
 | |
|         /// When <see cref="ResourceType"/> has been specified and <see cref="ShortName"/>
 | |
|         /// represents a resource key within that resource type, then the localized value will be returned.
 | |
|         /// </para>
 | |
|         /// <para>
 | |
|         /// If <see cref="ShortName"/> is <c>null</c>, the value from <see cref="GetName"/> will be returned.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// After setting both the <see cref="ResourceType"/> property and the <see cref="ShortName"/> property,
 | |
|         /// but a public static property with a name matching the <see cref="ShortName"/> value couldn't be found
 | |
|         /// on the <see cref="ResourceType"/>.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public string GetShortName() {
 | |
|             return this._shortName.GetLocalizableValue() ?? this.GetName();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the UI display string for Name.
 | |
|         /// <para>
 | |
|         /// This can be either a literal, non-localized string provided to <see cref="Name"/> or the
 | |
|         /// localized string found when <see cref="ResourceType"/> has been specified and <see cref="Name"/>
 | |
|         /// represents a resource key within that resource type.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="ResourceType"/> has not been specified, the value of
 | |
|         /// <see cref="Name"/> will be returned.
 | |
|         /// <para>
 | |
|         /// When <see cref="ResourceType"/> has been specified and <see cref="Name"/>
 | |
|         /// represents a resource key within that resource type, then the localized value will be returned.
 | |
|         /// </para>
 | |
|         /// <para>
 | |
|         /// Can return <c>null</c> and will not fall back onto other values, as it's more likely for the
 | |
|         /// consumer to want to fall back onto the property name.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// After setting both the <see cref="ResourceType"/> property and the <see cref="Name"/> property,
 | |
|         /// but a public static property with a name matching the <see cref="Name"/> value couldn't be found
 | |
|         /// on the <see cref="ResourceType"/>.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public string GetName() {
 | |
|             return this._name.GetLocalizableValue();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the UI display string for Description.
 | |
|         /// <para>
 | |
|         /// This can be either a literal, non-localized string provided to <see cref="Description"/> or the
 | |
|         /// localized string found when <see cref="ResourceType"/> has been specified and <see cref="Description"/>
 | |
|         /// represents a resource key within that resource type.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="ResourceType"/> has not been specified, the value of
 | |
|         /// <see cref="Description"/> will be returned.
 | |
|         /// <para>
 | |
|         /// When <see cref="ResourceType"/> has been specified and <see cref="Description"/>
 | |
|         /// represents a resource key within that resource type, then the localized value will be returned.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// After setting both the <see cref="ResourceType"/> property and the <see cref="Description"/> property,
 | |
|         /// but a public static property with a name matching the <see cref="Description"/> value couldn't be found
 | |
|         /// on the <see cref="ResourceType"/>.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public string GetDescription() {
 | |
|             return this._description.GetLocalizableValue();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the UI display string for Prompt.
 | |
|         /// <para>
 | |
|         /// This can be either a literal, non-localized string provided to <see cref="Prompt"/> or the
 | |
|         /// localized string found when <see cref="ResourceType"/> has been specified and <see cref="Prompt"/>
 | |
|         /// represents a resource key within that resource type.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="ResourceType"/> has not been specified, the value of
 | |
|         /// <see cref="Prompt"/> will be returned.
 | |
|         /// <para>
 | |
|         /// When <see cref="ResourceType"/> has been specified and <see cref="Prompt"/>
 | |
|         /// represents a resource key within that resource type, then the localized value will be returned.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// After setting both the <see cref="ResourceType"/> property and the <see cref="Prompt"/> property,
 | |
|         /// but a public static property with a name matching the <see cref="Prompt"/> value couldn't be found
 | |
|         /// on the <see cref="ResourceType"/>.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public string GetPrompt() {
 | |
|             return this._prompt.GetLocalizableValue();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the UI display string for GroupName.
 | |
|         /// <para>
 | |
|         /// This can be either a literal, non-localized string provided to <see cref="GroupName"/> or the
 | |
|         /// localized string found when <see cref="ResourceType"/> has been specified and <see cref="GroupName"/>
 | |
|         /// represents a resource key within that resource type.
 | |
|         /// </para>
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="ResourceType"/> has not been specified, the value of
 | |
|         /// <see cref="GroupName"/> will be returned.
 | |
|         /// <para>
 | |
|         /// When <see cref="ResourceType"/> has been specified and <see cref="GroupName"/>
 | |
|         /// represents a resource key within that resource type, then the localized value will be returned.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <exception cref="System.InvalidOperationException">
 | |
|         /// After setting both the <see cref="ResourceType"/> property and the <see cref="GroupName"/> property,
 | |
|         /// but a public static property with a name matching the <see cref="GroupName"/> value couldn't be found
 | |
|         /// on the <see cref="ResourceType"/>.
 | |
|         /// </exception>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public string GetGroupName() {
 | |
|             return this._groupName.GetLocalizableValue();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the value of <see cref="AutoGenerateField"/> if it has been set, or <c>null</c>.
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="AutoGenerateField"/> has been set returns the value of that property.
 | |
|         /// <para>
 | |
|         /// When <see cref="AutoGenerateField"/> has not been set returns <c>null</c>.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public bool? GetAutoGenerateField() {
 | |
|             return this._autoGenerateField;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the value of <see cref="AutoGenerateFilter"/> if it has been set, or <c>null</c>.
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="AutoGenerateFilter"/> has been set returns the value of that property.
 | |
|         /// <para>
 | |
|         /// When <see cref="AutoGenerateFilter"/> has not been set returns <c>null</c>.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public bool? GetAutoGenerateFilter() {
 | |
|             return this._autoGenerateFilter;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the value of <see cref="Order"/> if it has been set, or <c>null</c>.
 | |
|         /// </summary>
 | |
|         /// <returns>
 | |
|         /// When <see cref="Order"/> has been set returns the value of that property.
 | |
|         /// <para>
 | |
|         /// When <see cref="Order"/> has not been set returns <c>null</c>.
 | |
|         /// </para>
 | |
|         /// </returns>
 | |
|         /// <remarks>
 | |
|         /// When an order is not specified, presentation layers should consider using the value
 | |
|         /// of 10000.  This value allows for explicitly-ordered fields to be displayed before
 | |
|         /// and after the fields that don't specify an order.
 | |
|         /// </remarks>
 | |
|         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This method does work using a property of the same name")]
 | |
|         public int? GetOrder() {
 | |
|             return this._order;
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
|     }
 | |
| }
 |