Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Attribute.Equals Method

This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.

Returns a value that indicates whether this instance is equal to a specified object.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public override bool Equals(
	Object obj
)

Parameters

obj
Type: System.Object
An Object to compare with this instance or null.

Return Value

Type: System.Boolean
true if obj equals the type and value of this instance; otherwise, false.

The following code example defines two custom parameter Attribute classes, then creates several objects of each class and shows the use of the Equals method to compare them.


// Example for the Attribute.Equals( object ) method.
using System;
using System.Reflection;

// Define a custom parameter attribute that takes a single message argument.
[AttributeUsage(AttributeTargets.Parameter)]
public class ArgumentUsageAttribute : Attribute
{
    // This is the attribute constructor.
    public ArgumentUsageAttribute(string UsageMsg)
    {
        this.usageMsg = UsageMsg;
    }

    // usageMsg is storage for the attribute message.
    protected string usageMsg;

    // Override ToString() to append the message to what the base generates.
    public override string ToString()
    {
        return base.ToString() + ":" + usageMsg;
    }
}

// Define a custom parameter attribute that generates
// a GUID for each instance.
[AttributeUsage(AttributeTargets.Parameter)]
public class ArgumentIDAttribute : Attribute
{
    // This is the attribute constructor, which generates the GUID.
    public ArgumentIDAttribute()
    {
        this.instanceGUID = Guid.NewGuid();
    }

    // instanceGUID is storage for the generated GUID.
    protected Guid instanceGUID;

    // Override ToString() to append the GUID to what the base generates.
    public override string ToString()
    {
        return base.ToString() + "." + instanceGUID.ToString();
    }
}

public class TestClass
{
    // Assign an ArgumentID attribute to each parameter.
    // Assign an ArgumentUsage attribute to each parameter.
    public void TestMethod(
        [ArgumentID]
        [ArgumentUsage("Must pass an array here.")]
        String[] strArray,
        [ArgumentID]
        [ArgumentUsage("Can pass param list or array here.")]
        params String[] strList)
    { }
}

class Example
{
    // Create Attribute objects and compare them.
    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {
        outputBlock.Text += "This example of Attribute.Equals( object ) " +
            "generates the following output." + "\n";

        // Get the class type, and then get the MethodInfo object
        // for TestMethod to access its metadata.
        Type clsType = typeof(TestClass);
        MethodInfo mInfo = clsType.GetMethod("TestMethod");

        // There will be two elements in pInfoArray, one for each parameter.
        ParameterInfo[] pInfoArray = mInfo.GetParameters();
        if (pInfoArray != null)
        {
            // Create an instance of the argument usage attribute on strArray.
            ArgumentUsageAttribute arrayUsageAttr1 = (ArgumentUsageAttribute)
                Attribute.GetCustomAttribute(pInfoArray[0],
                    typeof(ArgumentUsageAttribute));

            // Create another instance of the argument usage attribute
            // on strArray.
            ArgumentUsageAttribute arrayUsageAttr2 = (ArgumentUsageAttribute)
                Attribute.GetCustomAttribute(pInfoArray[0],
                    typeof(ArgumentUsageAttribute));

            // Create an instance of the argument usage attribute on strList.
            ArgumentUsageAttribute listUsageAttr = (ArgumentUsageAttribute)
                Attribute.GetCustomAttribute(pInfoArray[1],
                    typeof(ArgumentUsageAttribute));

            // Create an instance of the argument ID attribute on strArray.
            ArgumentIDAttribute arrayIDAttr1 = (ArgumentIDAttribute)
                Attribute.GetCustomAttribute(pInfoArray[0],
                    typeof(ArgumentIDAttribute));

            // Create another instance of the argument ID attribute on strArray.
            ArgumentIDAttribute arrayIDAttr2 = (ArgumentIDAttribute)
                Attribute.GetCustomAttribute(pInfoArray[0],
                    typeof(ArgumentIDAttribute));

            // Create an instance of the argument ID attribute on strList.
            ArgumentIDAttribute listIDAttr = (ArgumentIDAttribute)
                Attribute.GetCustomAttribute(pInfoArray[1],
                    typeof(ArgumentIDAttribute));

            // Compare various pairs of attributes for equality.
            outputBlock.Text += "\nCompare a usage attribute instance to " +
                "another instance of the same attribute:" + "\n";
            outputBlock.Text += String.Format("   \"{0}\" == \n   \"{1}\" ? {2}",
                arrayUsageAttr1.ToString(), arrayUsageAttr2.ToString(),
                arrayUsageAttr1.Equals(arrayUsageAttr2)) + "\n";

            outputBlock.Text += String.Format("\nCompare a usage attribute to " +
                "another usage attribute:") + "\n";
            outputBlock.Text += String.Format("   \"{0}\" == \n   \"{1}\" ? {2}",
                arrayUsageAttr1.ToString(), listUsageAttr.ToString(),
                arrayUsageAttr1.Equals(listUsageAttr)) + "\n";

            outputBlock.Text += String.Format("\nCompare an ID attribute instance to " +
                "another instance of the same attribute:") + "\n";
            outputBlock.Text += String.Format("   \"{0}\" == \n   \"{1}\" ? {2}",
                arrayIDAttr1.ToString(), arrayIDAttr2.ToString(),
                arrayIDAttr1.Equals(arrayIDAttr2)) + "\n";

            outputBlock.Text += "\nCompare an ID attribute to another ID attribute:" + "\n";
            outputBlock.Text += String.Format("   \"{0}\" == \n   \"{1}\" ? {2}",
                arrayIDAttr1.ToString(), listIDAttr.ToString(),
                arrayIDAttr1.Equals(listIDAttr)) + "\n";
        }
        else
            outputBlock.Text += String.Format("The parameters information could " +
                "not be retrieved for method {0}.", mInfo.Name) + "\n";
    }
}

/*
This example of Attribute.Equals( object ) generates the following output.

Compare a usage attribute instance to another instance of the same attribute:
   "ArgumentUsageAttribute:Must pass an array here." ==
   "ArgumentUsageAttribute:Must pass an array here." ? True

Compare a usage attribute to another usage attribute:
   "ArgumentUsageAttribute:Must pass an array here." ==
   "ArgumentUsageAttribute:Can pass param list or array here." ? False

Compare an ID attribute instance to another instance of the same attribute:
   "ArgumentIDAttribute.06abf046-0c38-47ac-b215-09e1daa7f37d" ==
   "ArgumentIDAttribute.cea23c39-f14b-4e95-bee2-9f661d8cd64b" ? False

Compare an ID attribute to another ID attribute:
   "ArgumentIDAttribute.06abf046-0c38-47ac-b215-09e1daa7f37d" ==
   "ArgumentIDAttribute.bdeb6f3e-18aa-410b-bef6-9788956b008c" ? False
*/


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2014 Microsoft