TemplateInstanceAttribute.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // System.Web.UI.TemplateInstanceAttribute.cs
  3. //
  4. // Noam Lampert ([email protected])
  5. //
  6. //
  7. // Permission is hereby granted, free of charge, to any person obtaining
  8. // a copy of this software and associated documentation files (the
  9. // "Software"), to deal in the Software without restriction, including
  10. // without limitation the rights to use, copy, modify, merge, publish,
  11. // distribute, sublicense, and/or sell copies of the Software, and to
  12. // permit persons to whom the Software is furnished to do so, subject to
  13. // the following conditions:
  14. //
  15. // The above copyright notice and this permission notice shall be
  16. // included in all copies or substantial portions of the Software.
  17. //
  18. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  19. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  21. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  22. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  23. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  24. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25. //
  26. using System.ComponentModel;
  27. using System.Security.Permissions;
  28. namespace System.Web.UI
  29. {
  30. // attributes
  31. [AttributeUsage (AttributeTargets.Property)]
  32. public sealed class TemplateInstanceAttribute : Attribute
  33. {
  34. #region Fields
  35. readonly TemplateInstance _instance;
  36. public static readonly TemplateInstanceAttribute Single;
  37. public static readonly TemplateInstanceAttribute Multiple;
  38. public static readonly TemplateInstanceAttribute Default;
  39. #endregion
  40. #region Constructors
  41. static TemplateInstanceAttribute () {
  42. Single = new TemplateInstanceAttribute (TemplateInstance.Single);
  43. Multiple = new TemplateInstanceAttribute (TemplateInstance.Multiple);
  44. Default = Multiple;
  45. }
  46. #endregion
  47. #region Properties
  48. public TemplateInstance Instances { get { return _instance; } }
  49. #endregion
  50. #region Methods
  51. public TemplateInstanceAttribute (TemplateInstance instance) {
  52. _instance = instance;
  53. }
  54. public override bool IsDefaultAttribute () {
  55. return Equals (Default);
  56. }
  57. public override bool Equals (object obj) {
  58. if (this == obj)
  59. return true;
  60. TemplateInstanceAttribute other = obj as TemplateInstanceAttribute;
  61. if (obj == null)
  62. return false;
  63. return Instances == other.Instances;
  64. }
  65. public override int GetHashCode () {
  66. return (int) Instances;
  67. }
  68. #endregion
  69. }
  70. }