c#

自定义attributes在C#中的实现方法

小樊
83
2024-08-22 00:54:32
栏目: 编程语言

在C#中,自定义属性是通过创建一个派生自System.Attribute类的新类来实现的。以下是一个简单的自定义属性的例子:

using System;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class CustomAttribute : Attribute
{
    public string Name { get; set; }
    public int Value { get; set; }

    public CustomAttribute(string name, int value)
    {
        Name = name;
        Value = value;
    }
}

[Custom("Attribute1", 1)]
[Custom("Attribute2", 2)]
public class MyClass
{
    [Custom("MethodAttribute", 3)]
    public void MyMethod()
    {
        // Some code here
    }
}

在上面的例子中,我们创建了一个名为CustomAttribute的自定义属性,并为其添加了Name和Value两个属性。然后我们在MyClass类和MyMethod方法上分别应用了CustomAttribute属性。

要访问自定义属性的值,可以使用反射来检索应用于类或方法的所有自定义属性,并获取其值,如下所示:

class Program
{
    static void Main(string[] args)
    {
        Type type = typeof(MyClass);
        var classAttributes = type.GetCustomAttributes(typeof(CustomAttribute), false);

        foreach (CustomAttribute attribute in classAttributes)
        {
            Console.WriteLine($"Name: {attribute.Name}, Value: {attribute.Value}");
        }

        var methodInfo = type.GetMethod("MyMethod");
        var methodAttributes = methodInfo.GetCustomAttributes(typeof(CustomAttribute), false);

        foreach (CustomAttribute attribute in methodAttributes)
        {
            Console.WriteLine($"Name: {attribute.Name}, Value: {attribute.Value}");
        }
    }
}

以上代码将输出以下结果:

Name: Attribute1, Value: 1
Name: Attribute2, Value: 2
Name: MethodAttribute, Value: 3

这样就实现了在C#中创建和使用自定义属性的方法。

0
看了该问题的人还看了