CodeAttributeDeclaration - 自定义属性

时间:2014-10-03 11:28:58

标签: c# .net

我想创造类似的东西:

[MyAttribute(HelperClass.Param,ResourceType = typeof(Resources))]         公共字符串Foo         {         }

我如何创建此自定义属性? 这是我的代码:

var configParamAttr = new CodeAttributeDeclaration { Name = "MyAttribute", Arguments =  new CodeAttributeArgument { Name = "ResourceType", Value = new CodePrimitiveExpression("typeof(Resources)") } } };
                currentProperty.CustomAttributes.Add(configParamAttr);

我不知道如何投入自定义属性' HelperClass.Param'。这与其他班级不变。我的' typeof(资源)是结果中的字符串:

 [MyAttribute( ResourceType="typeof(Resources)")]
        public string Foo
        {
        }
    }

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

以下代码似乎运行良好,它能做到你想要的吗?

using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World");
        var a = new Foo();
        var b = new Foo2();
        var res = a.GetType().CustomAttributes;
        foreach(var i in res)
        {
            Console.WriteLine(i);
        }
        var res2 = b.GetType().CustomAttributes;
        foreach(var i in res2)
        {
            Console.WriteLine(i);
        }
    }
}

[MyAttr(typeof(int))]
public class Foo
{
}

[MyAttr(Constants.Value,typeof(int))]
public class Foo2
{
}

public static class Constants
{
    public const int Value=1;
}

public class MyAttr:Attribute
{
    public Type Field {get;set;}

    public MyAttr(Type type)
    {
        this.Field=type;
    }
    public MyAttr(int a, Type type)
    {
        this.Field=type;
    }
}