ExtenderProvidedPropertyAttribute.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // System.ComponentModel.ExtenderProvidedPropertyAttribute.cs
  3. //
  4. // Author:
  5. // Andreas Nahr ([email protected])
  6. //
  7. // (C) 2003 Andreas Nahr
  8. //
  9. using System;
  10. namespace System.ComponentModel
  11. {
  12. [AttributeUsage(AttributeTargets.All)]
  13. public sealed class ExtenderProvidedPropertyAttribute : Attribute
  14. {
  15. private PropertyDescriptor extender;
  16. private IExtenderProvider extenderProvider;
  17. private Type receiver;
  18. public ExtenderProvidedPropertyAttribute()
  19. {
  20. }
  21. // Call this method to create a ExtenderProvidedPropertyAttribute and set it's values
  22. internal static ExtenderProvidedPropertyAttribute CreateAttribute (PropertyDescriptor extenderProperty, IExtenderProvider provider, Type receiverType)
  23. {
  24. ExtenderProvidedPropertyAttribute NewAttribute = new ExtenderProvidedPropertyAttribute();
  25. NewAttribute.extender = extenderProperty;
  26. NewAttribute.receiver = receiverType;
  27. NewAttribute.extenderProvider = provider;
  28. return NewAttribute;
  29. }
  30. public PropertyDescriptor ExtenderProperty {
  31. get {
  32. return extender;
  33. }
  34. }
  35. public IExtenderProvider Provider {
  36. get {
  37. return extenderProvider;
  38. }
  39. }
  40. public Type ReceiverType {
  41. get {
  42. return receiver;
  43. }
  44. }
  45. public override bool IsDefaultAttribute()
  46. {
  47. // FIXME correct implementation??
  48. return (extender == null) &&
  49. (extenderProvider == null) &&
  50. (receiver == null);
  51. }
  52. public override bool Equals (object obj)
  53. {
  54. if (!(obj is ExtenderProvidedPropertyAttribute))
  55. return false;
  56. if (obj == this)
  57. return true;
  58. return ((ExtenderProvidedPropertyAttribute) obj).ExtenderProperty.Equals (extender) &&
  59. ((ExtenderProvidedPropertyAttribute) obj).Provider.Equals (extenderProvider) &&
  60. ((ExtenderProvidedPropertyAttribute) obj).ReceiverType.Equals (receiver);
  61. }
  62. public override int GetHashCode()
  63. {
  64. return extender.GetHashCode() ^ extenderProvider.GetHashCode() ^ receiver.GetHashCode();
  65. }
  66. }
  67. }