Merge pull request #2707 from lambdageek/dev/monoerror-mono_image_load_module_dynamic
[mono.git] / mcs / class / corlib / System.Reflection / CustomAttributeNamedArgument.cs
index c17fe099fb56c33baffa5909599a16a801e73bd7..594c60a74a2ce03a65933cc3c713995fafea0aa0 100644 (file)
@@ -27,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Runtime.InteropServices;
 
@@ -39,11 +37,18 @@ namespace System.Reflection {
        public struct CustomAttributeNamedArgument {
                CustomAttributeTypedArgument typedArgument;
                MemberInfo memberInfo;
-
-               internal CustomAttributeNamedArgument (MemberInfo memberInfo, object typedArgument)
+               
+               public
+               CustomAttributeNamedArgument (MemberInfo memberInfo, object value)
+               {
+                       this.memberInfo = memberInfo;
+                       this.typedArgument = (CustomAttributeTypedArgument) value;
+               }
+               
+               public CustomAttributeNamedArgument (MemberInfo memberInfo, CustomAttributeTypedArgument typedArgument)
                {
                        this.memberInfo = memberInfo;
-                       this.typedArgument = (CustomAttributeTypedArgument) typedArgument;
+                       this.typedArgument = typedArgument;
                }
 
                public MemberInfo MemberInfo {
@@ -58,13 +63,43 @@ namespace System.Reflection {
                        }
                }
 
+               public bool IsField {
+                       get { return memberInfo.MemberType == MemberTypes.Field; }
+               }
+
+               public string MemberName {
+                       get { return memberInfo.Name; }
+               }
+
                public override string ToString ()
                {
                        return memberInfo.Name + " = " + typedArgument.ToString ();
                }
+
+               public override bool Equals (object obj)
+               {
+                       if (!(obj is CustomAttributeNamedArgument))
+                               return false;
+                       CustomAttributeNamedArgument other = (CustomAttributeNamedArgument) obj;
+                       return  other.memberInfo == memberInfo &&
+                               typedArgument.Equals (other.typedArgument);
+               }
+
+               public override int GetHashCode ()
+               {
+                       return (memberInfo.GetHashCode () << 16) + typedArgument.GetHashCode ();
+               }
+
+               public static bool operator == (CustomAttributeNamedArgument left, CustomAttributeNamedArgument right)
+               {
+                       return left.Equals (right);
+               }
+
+               public static bool operator != (CustomAttributeNamedArgument left, CustomAttributeNamedArgument right)
+               {
+                       return !left.Equals (right);
+               }
        }
 
 }
 
-#endif
-